-        Carga de datos y selección de variables

 

library(haven)

library(labelled)

library(kableExtra)

cis <- as.data.frame(read_sav("3303.sav"))

cis <- remove_labels(cis)

cis <- remove_attributes(cis, "display_width")

library(dplyr)

cis <- cis %>% select(SEXO,EDAD,CCAA,P0,P13,P18,P19,P20,INTENCIONG,INTENCIONGALTER,SIMPATIA,ESCIDEOL,ESCIDEOLPOLI_1,ESCIDEOLPOLI_2,ESCIDEOLPOLI_3,ESCIDEOLPOLI_4,ESCIDEOLPOLI_5,P25_1,P25_2,P25_3,P25_4,P25_5,PARTICIPACIONG,RECUVOTOG,CERCANIA,NIVELESTENTREV,RELIGION,ECIVIL,SITLAB,CLASESOCIAL, PESO)

dim(cis)

 

 

-        Número de NAs y gráfico de barras de los NAs

 

NAs <- colSums(is.na(cis))

NAs

 

library(ggplot2)

library(ggthemes)

library(data.table)

library(DataExplorer)

plot_missing_2 <-

  function (data, group = list(Muy_bajo = 0.05, Bajo = 0.2, Elevado = 0.8,

                               Muy_elevado =  1), geom_label_args = list(), title = NULL, ggtheme = theme_gray(),

            theme_config = list(legend.position = c("bottom"), text=element_text(family="Times", size=20), plot.title = element_text(face = "bold.italic", hjust = -0.4, color = "darkgray" )))

  {

    pct_missing <- Escala <- NULL

    missing_value <- data.table(profile_missing(data))

    group <- group[sort.list(unlist(group))]

    invisible(lapply(seq_along(group), function(i) {

      if (i == 1) {

        missing_value[pct_missing <= group[[i]], `:=`(Escala,

                                                      names(group)[i])]

      } else {

        missing_value[pct_missing > group[[i - 1]] & pct_missing <=

                        group[[i]], `:=`(Escala, names(group)[i])]

      }

    }))

    output <- ggplot(missing_value, aes_string(x = "feature",

                                               y = "num_missing", fill = "Escala")) + geom_bar(stat = "identity") +

      scale_fill_manual("Escala", values = c("Muy_bajo"="#E5F5F9","Bajo"="#99D8C9","Elevado"="#2CA25F","Muy_elevado"="firebrick2")) + coord_flip() + xlab("Atributos") +

      ylab("Número de NAs")

    geom_label_args_list <- list(mapping = aes(label = paste0(round(100 *

                                                                      pct_missing, 2), "%")))

    output <- output + do.call("geom_label", c(geom_label_args_list,

                                               geom_label_args))

    class(output) <- c("single", class(output))

    plotDataExplorer(plot_obj = output, title = title, ggtheme = ggtheme,

                     theme_config = theme_config)

  }

 

cis_<-cis

colnames(cis_) <- c("Sexo", "Edad", "Comunidad Autónoma", "Nacionalidad", "Valoración Situación económica", "Confianza en el presidente", "Confianza en la oposición", "Preferencia de presidente", "Intención de voto", "Intención de voto alternativo", "Simpatía partidista", "Ideología", "Ideología PS", "Ideología PC", "Ideología PI", "Ideología SA", "Ideología IA", "Valoración PS", "Valoración PC", "Valoración PI", "Valoración SA", "Valoración IA", "Participación electoral 2019", "Recuerdo de voto 2019", "Cercanía partidista",  "Nivel de estudios", "Religión", "Estado civil", "Situación laboral", "Clase social", "Pesos")

plot_missing_2(cis_, ggtheme = theme_classic(), title = "Valores nulos (NA) por atributo")

 

-        Imputación de las variables filtro con NAs complementarios

 

 

#Las variables que tienen NAs son:

# - P21a. INTENCIONGALTER -> Voto_alternativo_cod (1470)

# - P22.  SIMPATIA -> Simpatia_cod (2347)

# - P28a. NIVELESENTREV -> Estudios_cod (53)

# - P26a. RECUVOTOG -> Recuerdo_voto_cod (521)

 

#Filtros de pregunta Intención de voto alternativo:

 

# Si P21 -> INTENCIONG NO ES:

# - 77

# - 96

# - 97

# - 98

# - 99

 

II <- is.na(cis$INTENCIONGALTER)

table(II)

table(cis$INTENCIONG[II])

 

# ¿A qué valores corresponden esos NA en INTENCIONG?

  

table(cis$INTENCIONG[II])

 

# Imputación con valores de INTENCIONG

 

for(i in 1:nrow(cis))

{

  if(is.na(cis[i,"INTENCIONGALTER"])==TRUE)

  {

    cis[i,"INTENCIONGALTER"]=cis[i,"INTENCIONG"]

  }

}

 

II <- is.na(cis$INTENCIONGALTER)

table(II)

 

#Filtros pregunta Simpatía:

 

# Si P21 -> INTENCIONG NO ES:

#- 77

#- 96

#- 97

#- 98

#- 99

 

#Errata en el cuestionario. Las personas que responden a SIMPATÍA son las que no responden a INTENCIONGALTER, es decir, las que responden a INTENCIONG.

 

II <- is.na(cis$SIMPATIA)

table(II)

table(cis$INTENCIONG[II])

table(cis$INTENCIONG[II=="FALSE"])

 

#Imputaremos los valores de INTENCIONG en Simpatía

 

for(i in 1:nrow(cis))

{

  if(is.na(cis[i,"SIMPATIA"])==TRUE)

  {

    cis[i,"SIMPATIA"]=cis[i,"INTENCIONG"]

  }

}

II <- is.na(cis$SIMPATIA)

table(II)

 

 

#Filtros nivel de estudios entrevistado:

 

# Si P28 -> ¿Ha ido ud. a la escuela o cursado algún tipo de estudios? = 3 Sí ha ido.

#Nueva categoría/Sin estudios.

 

II <- is.na(cis$NIVELESTENTREV)

table(II)

 

#Los imputaremos con valor 100 y posteriormente crearemos la categoría Sin estudios.

 

for(i in 1:nrow(cis))

{

  if(is.na(cis[i,"NIVELESTENTREV"])==TRUE)

  {

    cis[i,"NIVELESTENTREV"]=100

  }

}

 

#Filtros recuerdo de voto:

 

# Si P26 (PARTICIPACIONG) -> ¿Me podría decir si votó en las elecciones generales del pasado 2019? = 1 o 7, Es decir que votó.

# Nueva categoría -> No votó en las pasadas elecciones (2 al 9)

 

II <- is.na(cis$RECUVOTOG)

table(II)

table(cis$PARTICIPACIONG[II])

 

#Los vamos a imputar con valor = 100 y luego lo cambiaremos en la codificació a la categoría No votó

 

 

for(i in 1:nrow(cis))

{

  if(is.na(cis[i,"RECUVOTOG"])==TRUE)

  {

    cis[i,"RECUVOTOG"]=100

  }

}

 

-        Convertir a factor las variables

for(i in 1:(ncol(cis)))

{

  if(class(cis[,i])=="numeric")

  {

    if(colnames(cis)[i]!="EDAD")

    {

      cis[,i]<- as.factor(cis[,i])

    }

  }

}

 

-        Tabla de la Comunidad Autónoma

table(cis$CCAA)

cis$CCAA <- as.factor(cis$CCAA)

tabla_CCAA_cod <- rownames(table(cis$CCAA))

tabla_CCAA_cod <- cbind(tabla_CCAA_cod, c("Andalucía", "Aragón", "Asturias (Principado de)", "Baleares (Illes)", "Canarias", "Cantabria", "Castilla-La Mancha", "Castilla y León", "Cataluña", "Comunitat Valenciana", "Extremadura", "Galicia", "Madrid (Comunidad de)", "Murcia (Región de)", "Navarra (Comunidad Floral de)", "País Vasco", "Rioja (La)", "Ceuta (Ciudad Autónoma de)", "Melilla (Ciudad Autónoma de)"))

colnames(tabla_CCAA_cod) <- NULL

 

options(knitr.kable.NA = '')

kable(tabla_CCAA_cod, position = "center", booktabs = TRUE, align = "cl", caption = "<leftr><em> P-: Comunidad autónoma del entrevistado </em></leftr>", escape = FALSE, font_size = 15) %>%

  kable_classic(full_width = F, html_font = "Times New Roman")%>%

  add_header_above (c("Valores iniciales" = 2))%>%

  column_spec(2, width = "6cm")%>%

  column_spec(1, width = "1cm")

 

-        Tabla del sexo del encuestado

cis$SEXO <- as.factor(cis$SEXO)

tabla_sexo_cod <- rownames(table(cis$SEXO))

tabla_sexo_cod <- cbind(tabla_sexo_cod, c("Hombre", "Mujer"))

colnames(tabla_sexo_cod) <- NULL

 

options(knitr.kable.NA = '')

kable(tabla_sexo_cod, position = "center", booktabs = TRUE, align = "cl", caption = "<leftr><em> P0a: Sexo </em></leftr>", escape = FALSE, font_size = 15) %>%

  kable_classic(full_width = F, html_font = "Times New Roman")%>%

  add_header_above (c("Valores iniciales" = 2))%>%

  column_spec(1, width = "1cm")%>%

  column_spec(2, width = "2cm")

 

-        Recodificación y tabla de la edad del encuestado

table(cis$EDAD)

cis <- cis %>%

  mutate(Edad_grupos = case_when(EDAD >= 18 & EDAD <= 24  ~ 1,

                                 EDAD >= 25 & EDAD <= 34  ~ 2,

                                 EDAD >= 35 & EDAD <= 44  ~ 3,

                                 EDAD >= 45 & EDAD <= 54  ~ 4,

                                 EDAD >= 55 & EDAD <= 64  ~ 5,

                                 EDAD >= 65 ~ 6))

  cis$Edad_grupos <- as.factor(cis$Edad_grupos)

tabla_edad_cod <- rownames(table(cis$Edad_grupos))

tabla_edad_cod <- cbind(tabla_edad_cod, c("De 18 a 24 años", "De 25 a 34 años", "De 35 a 44 años", "De 45 a 54 años", "De 55 a 64 años","Más de 65 años"))

colnames(tabla_edad_cod) <- NULL

 

options(knitr.kable.NA = '')

kable(tabla_edad_cod, position = "center", booktabs = TRUE, align = "cl", caption = "<leftr><em> P0b: Edad </em></leftr>", escape = FALSE, font_size = 15) %>%

  kable_classic(full_width = F, html_font = "Times New Roman")%>%

  add_header_above (c("Recodificación" = 2))%>%

  column_spec(2, width = "3cm")%>%

  column_spec(1, width = "1cm")

 

-        Tabla de la nacionalidad del encuestado

cis$P0 <- as.factor(cis$P0)

tabla_P0_cod <- rownames(table(cis$P0))

tabla_P0_cod <- cbind(tabla_P0_cod, c("Nacionalidad española", "Nacionalidad española y otra"))

colnames(tabla_P0_cod) <- NULL

 

options(knitr.kable.NA = '')

kbl(tabla_P0_cod, position = "center",align = "cl", caption = "<leftr><em> P0c: Nacionalidad del entrevistado </em></leftr>", font_size = 15) %>%

  kable_classic(full_width = F, html_font = "Times New Roman")%>%

  add_header_above (c("Valores iniciales" = 2))%>%

  column_spec(1, width = "1cm")%>%

  column_spec(2, width = "5cm")

 

-        Recodificación y tabla del nivel de estudios del encuestado

tabla_estudios<- rownames(table(cis$NIVELESTENTREV))[1:18]

tabla_estudios <- cbind(tabla_estudios, c("Menos de 5 años de escolarización","Primaria (enseñanza primaria o 5º curso de EGB)","Formación Profesional inicial","Secundaria (ESO completa, EGB completa, Bachillerato Elemental) ", "Formación Profesional de Grado Medio (FP I)", "Bachillerato/COU/PREU (Bachillerato superior, BUP)", "Formación Profesional de grado superior (FP II)", "Arquitectura / Ingeniería Técnica (aparejador/a; peritos/as)", "Diplomatura oficial", "Estudios de Grado", "Licenciatura", "Arquitectura/Ingeniería", "Máster oficial universitario", "Doctorado", "Títulos propios de posgrado (máster no oficial, etc.)", "Otros estudios", "N.S/No recuerda", "N.C"))

colnames(tabla_estudios) <- NULL

cis$Estudios <- NULL

cis <- cis %>%

  mutate(Estudios = case_when(NIVELESTENTREV == 0 | NIVELESTENTREV == 1 | NIVELESTENTREV == 2 | NIVELESTENTREV == 100 ~ 1,

                              NIVELESTENTREV == 3 | NIVELESTENTREV == 4 | NIVELESTENTREV == 5 | NIVELESTENTREV == 6 | NIVELESTENTREV == 7  ~ 2,

                              NIVELESTENTREV == 8 | NIVELESTENTREV == 9 | NIVELESTENTREV == 10 | NIVELESTENTREV == 11 | NIVELESTENTREV == 12 |

                                NIVELESTENTREV == 13 | NIVELESTENTREV == 14 | NIVELESTENTREV == 15 ~ 3,

                              NIVELESTENTREV == 16 ~ 4,

                              NIVELESTENTREV == 98 | NIVELESTENTREV == 99 ~ 99))

cis$Estudios <- as.factor(cis$Estudios)

tabla_estudios_cod <- rownames(table(cis$Estudios))

tabla_estudios_cod <- cbind(tabla_estudios_cod, c("Sin estudios / Estudios Primarios", "Estudios Secundarios / Formación Profesional", "Estudios Superiores", "Otros estudios", "NS/NC"))

colnames(tabla_estudios_cod) <- NULL

library(zoo)

tabla_estudios <- as.data.frame(tabla_estudios)

tabla_estudios_cod <- as.data.frame(tabla_estudios_cod)

tabla_total_estudios <- data.frame(tabla_estudios, cbind(zoo(, 1:nrow(tabla_estudios)), as.zoo(tabla_estudios_cod)))

colnames(tabla_total_estudios) <- NULL

tabla_total_estudios[,4]<-as.character(tabla_total_estudios[,4])

tabla_total_estudios[1,4]<-paste("Sin estudios / Estudios Primarios", footnote_marker_number(1, "html"))

tabla_total_estudios[2,4]<-paste("Estudios Secundarios / Formación Profesional", footnote_marker_number(2, "html"))

tabla_total_estudios[3,4]<-paste("Estudios Superiores", footnote_marker_number(3, "html"))

 

options(knitr.kable.NA = '')

kable(tabla_total_estudios, position = "center", booktabs = TRUE, align = "clcl", caption = "<left><em>P28a: Nivel de estudios alcanzado por la persona entrevistada </em></left>", escape = FALSE) %>%

  kableExtra::footnote(number = c("NA, Menos de 5 años de escolarización y Primaria (enseñanza primaria o hasta 5o de EGB)", "Formación Profesional inicial, Secundaria (Bachillerato Elemental, EGB completa, ESO completa),

                    Formación Profesional de grado medio (FP I), Bachillerato/ COU/ PREU (Bachillerato superior, BUP, bachillerato)

                    y Formación Profesional de grado superior (FP II)", "Universitarios medios (diplomatura, arquitectura o ingeniería técnica) y Universitarios superiores

                    (licenciatura, grado, máster oficial, doctorado, títulos propios de postgrado no oficiales)"), threeparttable=T)%>%

  kable_classic(full_width = F, html_font = "Times New Roman")%>%

  add_header_above (c("Valores iniciales" = 2, "Recodificación" = 2))%>%

  column_spec(c(2), width = "4cm")%>%

  column_spec(c(4), width = "4cm")%>%

  column_spec(c(1,3), width = "2cm")

 

-        Recodificación y tabla de la situación laboral

tabla_situ<- rownames(table(cis$SITLAB))

tabla_situ <- cbind(tabla_situ, c("Trabaja", "Jubilado/a o pensionista (trabajó con anterioridad)", "Pensionista (no trabajó con anterioridad)", "En paro y ha trabajado con anterioridad", "En paro y en busca de su primer empleo", "Estudiante", "Trabajo doméstico no remunerado", "Otra situación", "NC"))

colnames(tabla_situ) <- NULL

 

cis$Situ <- NULL

cis <- cis %>%

  mutate(Situ = case_when(SITLAB == 1 ~ 1,

                          SITLAB == 2 | SITLAB == 3 ~ 2,

                          SITLAB == 4 | SITLAB == 5 ~ 3,

                          SITLAB == 6 ~ 4,

                          SITLAB == 6 ~ 4,

                          SITLAB == 7 ~ 5,

                          SITLAB == 8 ~ 6,

                          SITLAB == 9 ~ 99))

cis$Situ <- as.factor(cis$Situ)

tabla_situ_cod <- rownames(table(cis$Situ))

tabla_situ_cod <- cbind(tabla_situ_cod, c("Trabajadores", "Jubilados o pensionistas", "Parados", "Estudiantes", "Trabajo doméstico no remunerado", "Otra situación", "NC"))

colnames(tabla_situ_cod) <- NULL

tabla_situ <- as.data.frame(tabla_situ)

tabla_situ_cod <- as.data.frame(tabla_situ_cod)

tabla_total_situ <- data.frame(tabla_situ, cbind(zoo(, 1:nrow(tabla_situ)), as.zoo(tabla_situ_cod)))

colnames(tabla_total_situ) <- NULL

tabla_total_situ[,4]<-as.character(tabla_total_situ[,4])

tabla_total_situ[2,4]<-paste("Jubilados o pensionistas", footnote_marker_number(1, "html"))

tabla_total_situ[3,4]<-paste("Parados", footnote_marker_number(2, "html"))

options(knitr.kable.NA = '')

kable(tabla_total_situ, position = "center", booktabs = TRUE, align = "clcl", caption = "<lef><em>P31: Situación laboral de la persona entrevistada </em></left>", escape = FALSE) %>%

  kableExtra::footnote(number = c("Jubilado/a o pensionista (trabajó con anterioridad), Pensionista (no trabajó con anterioridad)", "En paro y ha trabajado con anterioridad, En paro y en busca de su primer empleo"))%>%

  kable_classic(full_width = F, html_font = "Times New Roman")%>%

  add_header_above (c("Valores iniciales" = 2, "Recodificación" = 2))

 

-          Recodificación y tabla de la religión del encuestado

tabla_religion<- rownames(table(cis$RELIGION))

tabla_religion <- cbind(tabla_religion, c("Católico/a practicante", "Católico/a no practicante", "Creyente de otra religión", "Agnóstico/a", "Indiferente, no creyente", "Ateo/a", "NC"))

colnames(tabla_religion) <- NULL

cis$Religion_cod <- NULL

cis <- cis %>%

  mutate(Religion_cod = case_when(RELIGION == 1 | RELIGION == 2  ~ 1,

                                  RELIGION == 3 ~ 2,

                                  RELIGION == 4 | RELIGION == 5 ~ 3,

                                  RELIGION == 6 ~ 4,

                                  RELIGION == 9 ~ 99))

cis$Religion_cod <- as.factor(cis$Religion_cod)

tabla_religion_cod <- rownames(table(cis$Religion_cod))

tabla_religion_cod <- cbind(tabla_religion_cod, c("Católico", "Creyente de otra religión", "No creyente", "Ateo/a", "NC"))

colnames(tabla_religion_cod) <- NULL

tabla_religion <- as.data.frame(tabla_religion)

tabla_religion_cod <- as.data.frame(tabla_religion_cod)

tabla_total_religion <- data.frame(tabla_religion, cbind(zoo(, 1:nrow(tabla_religion)), as.zoo(tabla_religion_cod)))

colnames(tabla_total_religion) <- NULL

tabla_total_religion[,4]<-as.character(tabla_total_religion[,4])

tabla_total_religion[1,4]<-paste("Católico", footnote_marker_number(1, "html"))

tabla_total_religion[3,4]<-paste("No creyente", footnote_marker_number(2, "html"))

options(knitr.kable.NA = '')

kable(tabla_total_religion, position = "center", booktabs = TRUE, align = "clcl", caption = "<left><em>P29: Religiosidad de la persona entrevistada </em></left>", escape = FALSE) %>%

  kableExtra::footnote(number = c("Católico/a practicante, Católico/a no practicante", "Agnóstico/a, Indiferente, no creyente"))%>%

  kable_classic(full_width = F, html_font = "Times New Roman") %>%

  add_header_above (c("Valores iniciales" = 2, "Recodificación" = 2))%>%

  column_spec(c(1,3), width = "1cm")

 

-          Recodificación y tabla del estado civil del encuestado

tabla_civil<- rownames(table(cis$ECIVIL))

tabla_civil <- cbind(tabla_civil, c("Casado/a", "Soltero/a", "Viudo/a", "Separado/a", "Divorciado/a", "NC"))

colnames(tabla_civil) <- NULL

cis$civil_cod <- NULL

cis <- cis %>%

  mutate(civil_cod = case_when(ECIVIL == 1 ~ 1,

                               ECIVIL == 2 | ECIVIL == 4 | ECIVIL == 5 ~ 2,

                               ECIVIL == 3 ~ 3,

                               ECIVIL == 9 ~ 99))

cis$civil_cod <- as.factor(cis$civil_cod)

tabla_civil_cod <- rownames(table(cis$civil_cod))

tabla_civil_cod <- cbind(tabla_civil_cod, c("Casado/a", "Soltero/a", "Viudo/a", "NC"))

colnames(tabla_civil_cod) <- NULL

tabla_civil <- as.data.frame(tabla_civil)

tabla_civil_cod <- as.data.frame(tabla_civil_cod)

 

tabla_total_civil <- data.frame(tabla_civil, cbind(zoo(, 1:nrow(tabla_civil)), as.zoo(tabla_civil_cod)))

colnames(tabla_total_civil) <- NULL

 

tabla_total_civil[,4]<-as.character(tabla_total_civil[,4])

tabla_total_civil[2,4]<-paste("Soltero/a", footnote_marker_number(1, "html"))

 

options(knitr.kable.NA = '')

 

kable(tabla_total_civil, position = "center", booktabs = TRUE, align = "clcl", caption = "<leftr><em>P30: Estado civil de la persona entrevistada </em></left>", escape = FALSE) %>%

  kableExtra::footnote(number = c("Soltero/a, Divorciado/a, Separado/a"))%>%

  kable_classic(full_width = F, html_font = "Times New Roman")%>%

  add_header_above (c("Valores iniciales" = 2, "Recodificación" = 2))%>%

  column_spec(c(2,4), width = "3cm")%>%

  column_spec(c(1,3), width = "1cm")

 

-        Recodificación y tabla de la clase social del encuestado

tabla_clase<- rownames(table(cis$CLASESOCIAL))

tabla_clase <- cbind(tabla_clase, c("Clase alta", "Clase media-alta", "Clase media-media", "Clase media-baja", "Calse trabajadora/obrera", "Clase pobre", "Proletariado", "A los/as de abajo", "Excluidos/as","A la gente común", "Clase baja", "Otras", "No cree en las clases", "No sabe, duda", "NC"))

colnames(tabla_clase) <- NULL  

cis$clase_cod <- NULL

cis <- cis %>%

  mutate(clase_cod = case_when(CLASESOCIAL == 1 ~ 1,

                               CLASESOCIAL == 2 | CLASESOCIAL == 3 | CLASESOCIAL == 4 ~ 2,

                               CLASESOCIAL == 5 | CLASESOCIAL == 6 | CLASESOCIAL == 8 | CLASESOCIAL == 9 | CLASESOCIAL == 10 | CLASESOCIAL == 11 | CLASESOCIAL == 12 ~ 3,

                               CLASESOCIAL == 96 ~ 4,

                               CLASESOCIAL == 97 ~ 5,

                               CLASESOCIAL == 98 | CLASESOCIAL == 99 ~ 99))

cis$clase_cod <- as.factor(cis$clase_cod)

tabla_clase_cod <- rownames(table(cis$clase_cod))

tabla_clase_cod <- cbind(tabla_clase_cod, c("Clase alta", "Clase media", "Clase baja", "Otra clase", "No cree en las clases", "NS/NC"))

colnames(tabla_clase_cod) <- NULL

tabla_clase <- as.data.frame(tabla_clase)

tabla_clase_cod <- as.data.frame(tabla_clase_cod)

tabla_total_clase <- data.frame(tabla_clase, cbind(zoo(, 1:nrow(tabla_clase)), as.zoo(tabla_clase_cod)))

colnames(tabla_total_clase) <- NULL

tabla_total_clase[,4]<-as.character(tabla_total_clase[,4])

tabla_total_clase[2,4]<-paste("Clase media", footnote_marker_number(1, "html"))

tabla_total_clase[3,4]<-paste("Clase baja", footnote_marker_number(2, "html"))

 

options(knitr.kable.NA = '')

kable(tabla_total_clase, position = "center", booktabs = TRUE, align = "clcl", caption = "<left><em>P32: Clase social subjetiva de la persona entrevistada </left></em>", escape = FALSE) %>%

  kableExtra::footnote(number = c("Clase media-alta, Clase media-media, Clase media-baja", "Clase trabajadora/obrera, Clase pobre, Proletariado, A los/as de abajo,

                    Excluidos/as, A la gente común, Clase baja "))%>%

  kable_classic(full_width = F, html_font = "Times New Roman")%>%

  add_header_above (c("Valores iniciales" = 2, "Recodificación" = 2))%>%

  column_spec(c(2,4), width = "5cm")%>%

  column_spec(c(1,3), width = "1cm")

 

-        Recodificación y tabla de la intención de voto

tabla_voto<- rownames(table(cis$INTENCIONG))

tabla_voto <- cbind(tabla_voto, c("PP", "PSOE", "Podemos", "Ciudadanos", "IU", "En Comú Podem", "Compromís", "ERC", "JxCat", "EAJ-PNV", "EH Bildu", "CC-PNC", "Nueva Canarias", "PACMA", "VOX", "CUP", "Los Verdes", "Unidas Podemos", "PAR", "BNG","Partido Libertario", "CHA", "Geroa Bai", "PCPE", "PRC", "UPL", "Más País", "En Común-Unidas Podemos", "Teruel Existe", "PDeCAT", "Voto nulo", "Otro partido", "En blanco", "No votaría", "No sabe todavía", "N.C"))

colnames(tabla_voto) <- NULL

cis$Voto_cod <- NULL

cis <- cis %>%

  mutate(Voto_cod = case_when(INTENCIONG == 1 ~ 1,

                              INTENCIONG == 2 ~ 2,

                              INTENCIONG == 3 | INTENCIONG == 5 | INTENCIONG == 6 |

                                INTENCIONG == 22 | INTENCIONG == 21 | INTENCIONG == 67 ~ 3,

                              INTENCIONG == 4 ~ 4,

                              INTENCIONG == 18 ~ 5,

                              INTENCIONG == 8 ~ 6,

                              INTENCIONG == 9 ~ 7,

                              INTENCIONG == 11 ~ 8,

                              INTENCIONG == 7 | INTENCIONG == 12 | INTENCIONG == 13 | INTENCIONG == 14 | INTENCIONG == 16 | INTENCIONG == 17 | INTENCIONG == 18 | INTENCIONG == 19 |INTENCIONG == 20 | INTENCIONG == 23 | INTENCIONG == 24 | INTENCIONG == 29 | INTENCIONG == 30 | INTENCIONG == 34 | INTENCIONG == 39 | INTENCIONG == 43 | INTENCIONG == 44 | INTENCIONG == 50 | INTENCIONG == 68 | INTENCIONG == 71 | INTENCIONG == 95 | INTENCIONG == 96  ~ 9,

                              INTENCIONG == 77 | INTENCIONG == 97 ~ 10,

                              INTENCIONG == 98 | INTENCIONG == 99 ~ 99))

cis$Voto_cod <- as.factor(cis$Voto_cod)

tabla_Voto_cod <- rownames(table(cis$Voto_cod))

tabla_Voto_cod <- cbind(tabla_Voto_cod, c("PP", "PSOE", "Podemos", "Ciudadanos", "VOX", "ERC", "JxCat", "EAJ-PNV", "Otros", "Abstención", "NS/NC"))

colnames(tabla_Voto_cod) <- NULL

tabla_voto <- as.data.frame(tabla_voto)

tabla_Voto_cod <- as.data.frame(tabla_Voto_cod)

tabla_total_Voto <- data.frame(tabla_voto, cbind(zoo(, 1:nrow(tabla_voto)), as.zoo(tabla_Voto_cod)))

colnames(tabla_total_Voto) <- NULL

tabla_total_Voto[,4]<-as.character(tabla_total_Voto[,4])

tabla_total_Voto[3,4]<-paste("Podemos", footnote_marker_number(1, "html"))

options(knitr.kable.NA = '')

kable(tabla_total_Voto, position = "center", booktabs = TRUE, align = "clcl", caption = " <left><br><em> P21: Intención de voto en nuevas elecciones generales </em></center>", escape = FALSE, )%>%

  kableExtra::footnote(number = c("Formado por la coalición de En Comú Podem, IU, EQUO, Unidas Podemos,

                    En Común - Unidas Podemos"))%>%

  kable_classic(full_width = F, html_font = "Times New Roman")%>%

  add_header_above (c("Valores iniciales" = 2, "Recodificación" = 2))%>%

  column_spec(c(2), width = "5cm")%>%

  column_spec(c(1,3), width = "1cm")

 

-        Recodificación y tabla de la intención de voto alternativo

#Misma codificación que Intención de voto, pero con una nueva categoría: No cambiaría su voto

cis$Voto_alternativo_cod <- NULL

cis <- cis %>%

  mutate(Voto_alternativo_cod = case_when(INTENCIONGALTER == 1 ~ 1,

                                          INTENCIONGALTER == 2 ~ 2,

                                          INTENCIONGALTER == 3 | INTENCIONGALTER == 5 | INTENCIONGALTER == 6 |

                                            INTENCIONGALTER == 22 | INTENCIONGALTER == 21 | INTENCIONGALTER == 67 ~ 3,

                                          INTENCIONGALTER == 4 ~ 4,

                                          INTENCIONGALTER == 18 ~ 5,

                                          INTENCIONGALTER == 8 ~ 6,

                                          INTENCIONGALTER == 9 ~ 7,

                                          INTENCIONGALTER == 11 ~ 8,

                                          INTENCIONGALTER == 7 | INTENCIONGALTER == 12 | INTENCIONGALTER == 13 | INTENCIONGALTER == 14 | INTENCIONGALTER == 16 | INTENCIONGALTER == 17 | INTENCIONGALTER == 18 | INTENCIONGALTER == 19 |INTENCIONGALTER == 20 | INTENCIONGALTER == 24 |INTENCIONGALTER == 25 |INTENCIONGALTER == 27 | INTENCIONGALTER == 29 | INTENCIONGALTER == 30 | INTENCIONGALTER == 38 |INTENCIONGALTER == 39 | INTENCIONGALTER == 43 | INTENCIONGALTER == 44 | INTENCIONGALTER == 50 | INTENCIONGALTER == 61 | INTENCIONGALTER == 68 | INTENCIONGALTER == 71 |INTENCIONGALTER == 72 | INTENCIONGALTER == 95 | INTENCIONGALTER == 96  ~ 9,

                                          INTENCIONGALTER == 93 ~ 10,

                                          INTENCIONGALTER == 77 | INTENCIONGALTER == 97 ~ 11,

                                          INTENCIONGALTER == 98 | INTENCIONGALTER == 99 ~ 99))

tabla_voto_alternativo <- rownames(table(cis$INTENCIONGALTER))

tabla_voto_alternativo <- cbind(tabla_voto_alternativo, c("PP", "PSOE", "Podemos", "Ciudadanos", "IU", "En Comú Podem", "Compromís", "ERC", "JxCat", "EAJ-PNV", "EH Bildu", "CC-PNC", "Nueva Canarias", "PACMA", "VOX", "CUP", "Los Verdes", "Unidas Podemos", "EQUO", "BNG","MÉS", "Escaños en Blanco", "Partido Libertario", "CHA", "UPyD", "PCPE", "PRC", "UPL", "Más País", "Democaracia Nacional", "En Común-Unidas Podemos", "Teruel Existe", "PDeCAT", "PNC (Partido Nacionalista Catalán)", "Voto nulo", "No votaría a ningún otro partido", "Otro partido", "En blanco", "No votaría", "N.S", "N.C"))

colnames(tabla_voto_alternativo) <- NULL

cis$Voto_alternativo_cod <- as.factor(cis$Voto_alternativo_cod)

tabla_Voto_alternativo_cod <- rownames(table(cis$Voto_alternativo_cod))

tabla_Voto_alternativo_cod <- cbind(tabla_Voto_alternativo_cod, c("PP", "PSOE", "Podemos", "Ciudadanos", "VOX", "ERC", "JxCat", "EAJ-PNV", "Otros", "No votaría a ningún otro partido", "Abstención", "NS/NC"))

colnames(tabla_Voto_cod) <- NULL

tabla_total_Voto_alternativo <- data.frame(tabla_voto_alternativo, cbind(zoo(, 1:nrow(tabla_voto_alternativo)), as.zoo(tabla_Voto_alternativo_cod)))

colnames(tabla_total_Voto_alternativo) <- NULL

tabla_total_Voto_alternativo[,4]<-as.character(tabla_total_Voto_alternativo[,4])

tabla_total_Voto_alternativo[3,4]<-paste("Podemos", footnote_marker_number(1, "html"))

 

options(knitr.kable.NA = '')

kable(tabla_total_Voto_alternativo, position = "center", booktabs = TRUE, align = "clcl", caption = "<leftr><em>P21a: Voto alternativo en futuras elecciones generales </em></left>", escape = FALSE, ) %>%

  kableExtra::footnote(number = c("Formado por la coalición de En Comú Podem, IU, EQUO, Unidas Podemos,

                    En Común - Unidas Podemos"))%>%

  kable_classic(full_width = F, html_font = "Times New Roman")%>%

  add_header_above (c("Valores iniciales" = 2, "Recodificación" = 2))%>%

  column_spec(c(1,3), width = "1cm")

 

-        Recodificación y tabla de la simpatía partidista

cis$Simpatia_cod <- NULL

cis <- cis %>%

  mutate(Simpatia_cod = case_when(SIMPATIA == 1 ~ 1,

                                  SIMPATIA == 2 ~ 2,

                                  SIMPATIA == 3 | SIMPATIA == 5 | SIMPATIA == 6 |

                                    SIMPATIA == 22 | SIMPATIA == 21 | SIMPATIA == 67 ~ 3,

                                  SIMPATIA == 4 ~ 4,

                                  SIMPATIA == 18 ~ 5,

                                  SIMPATIA == 8 ~ 6,

                                  SIMPATIA == 9 ~ 7,

                                  SIMPATIA == 11 ~ 8,

                                  SIMPATIA == 7 | SIMPATIA == 12 | SIMPATIA == 13 | SIMPATIA == 14 | SIMPATIA == 16 | SIMPATIA == 17 | SIMPATIA == 18 | SIMPATIA == 19 |SIMPATIA == 20 | SIMPATIA == 24 |SIMPATIA == 25 |SIMPATIA == 27 | SIMPATIA == 29 | SIMPATIA == 30 | SIMPATIA == 34 |SIMPATIA == 38 |SIMPATIA == 39 | SIMPATIA == 40 | SIMPATIA == 43 | SIMPATIA == 44 | SIMPATIA == 50 | SIMPATIA == 61 | SIMPATIA == 68 | SIMPATIA == 71 |SIMPATIA == 72 | SIMPATIA == 95 ~ 9,

                                  SIMPATIA == 97 ~ 10,

                                  SIMPATIA == 98 | SIMPATIA == 99 ~ 99))

 

-        Recodificación y tabla del recuerdo de voto en las anteriores elecciones

cis$Recuerdo_cod <- NULL

cis <- cis %>%

  mutate(Recuerdo_cod = case_when(RECUVOTOG == 1 ~ 1,

                                  RECUVOTOG == 2 ~ 2,

                                  RECUVOTOG == 3 | RECUVOTOG == 5 | RECUVOTOG == 6 |

                                    RECUVOTOG == 22 | RECUVOTOG == 21 | RECUVOTOG == 67 ~ 3,

                                  RECUVOTOG == 4 ~ 4,

                                  RECUVOTOG == 18 ~ 5,

                                  RECUVOTOG == 8 ~ 6,

                                  RECUVOTOG == 9 ~ 7,

                                  RECUVOTOG == 11 ~ 8,

                                  RECUVOTOG == 7 | RECUVOTOG == 12 | RECUVOTOG == 13 | RECUVOTOG == 14 | RECUVOTOG == 16 | RECUVOTOG == 17 | RECUVOTOG == 18 | RECUVOTOG == 19 |RECUVOTOG == 20 | RECUVOTOG == 22 | RECUVOTOG == 24 |RECUVOTOG == 25 |RECUVOTOG == 27 | RECUVOTOG == 29 | RECUVOTOG == 30 | RECUVOTOG == 38 |RECUVOTOG == 39 | RECUVOTOG == 40 | RECUVOTOG == 43 | RECUVOTOG == 44 | RECUVOTOG == 50 | RECUVOTOG == 61 | RECUVOTOG == 68 | RECUVOTOG == 71 |RECUVOTOG == 72 | RECUVOTOG == 95 | RECUVOTOG == 96 ~ 9,

                                  RECUVOTOG == 77 ~ 10,

                                  RECUVOTOG == 100 ~ 11,

                                  RECUVOTOG == 99 | RECUVOTOG == 98 ~ 99))

cis$Recuerdo_cod <- as.factor(cis$Recuerdo_cod)

tabla_Recuerdo_cod <- rownames(table(cis$Recuerdo_cod))

tabla_Recuerdo_cod <- cbind(tabla_Recuerdo_cod, c("PP", "PSOE", "Podemos", "Ciudadanos", "VOX", "ERC", "JxCat", "EAJ-PNV", "Otros", "Abstención", "No fué a votar", "NS/NC"))

colnames(tabla_Recuerdo_cod) <- NULL

tabla_total_Recuerdo <- data.frame(tabla_voto, cbind(zoo(, 1:nrow(tabla_voto)), as.zoo(tabla_Recuerdo_cod)))

colnames(tabla_total_Recuerdo) <- NULL

tabla_total_Recuerdo[,4]<-as.character(tabla_total_Recuerdo[,4])

tabla_total_Recuerdo[3,4]<-paste("Podemos", footnote_marker_number(1, "html"))

tabla_total_Recuerdo[11,4]<-paste("No fué a votar", footnote_marker_number(2, "html"))

 

options(knitr.kable.NA = '')

kable(tabla_total_Recuerdo, position = "center", booktabs = TRUE, align = "clcl", caption = " <left><em>P26a: Recuerdo de voto en las elecciones generales (nov. 2019) </em></left>", escape = FALSE, ) %>%

  kableExtra::footnote(number = c("Formado por la coalición de En Comú Podem, IU, EQUO, Unidas Podemos,

                    En Común - Unidas Podemos", "Formado por NAs de la variable inicial"))%>%

  kable_classic(full_width = F, html_font = "Times New Roman")%>%

  add_header_above (c("Valores iniciales" = 2, "Recodificación" = 2))%>%

  column_spec(2, width = "6cm")%>%

  column_spec(c(1,3), width = "1cm")

 

-        Recodificación y tabla de la cercanía partidista

cis$Cercania_cod <- NULL

cis <- cis %>%

  mutate(Cercania_cod = case_when(CERCANIA == 1 ~ 1,

                                  CERCANIA == 2 ~ 2,

                                  CERCANIA == 3 | CERCANIA == 5 | CERCANIA == 6 |

                                    CERCANIA == 22 | CERCANIA == 21 | CERCANIA == 67 ~ 3,

                                  CERCANIA == 4 ~ 4,

                                  CERCANIA == 18 ~ 5,

                                  CERCANIA == 8 ~ 6,

                                  CERCANIA == 9 ~ 7,

                                  CERCANIA == 11 ~ 8,

                                  CERCANIA == 7 | CERCANIA == 12 | CERCANIA == 13 | CERCANIA == 14 | CERCANIA == 16 | CERCANIA == 17 | CERCANIA == 18 | CERCANIA == 19 |CERCANIA == 20 | CERCANIA == 24 |CERCANIA == 25 | CERCANIA == 26 | CERCANIA == 29 | CERCANIA == 30 | CERCANIA == 34 |CERCANIA == 38 | CERCANIA == 40 | CERCANIA == 42 |CERCANIA == 43 | CERCANIA == 44 | CERCANIA == 50 | CERCANIA == 67 | CERCANIA == 68 | CERCANIA == 71 |CERCANIA == 72 | CERCANIA == 95 ~ 9,

                                  CERCANIA == 97 ~ 10,

                                  CERCANIA == 99 | CERCANIA == 98 ~ 99))

tabla_cercania <- rownames(table(cis$CERCANIA))

tabla_cercania <- cbind(tabla_cercania, c("PP", "PSOE", "Podemos", "Ciudadanos", "IU", "En Comú Podem", "Compromís", "ERC", "JxCat", "EAJ-PNV", "EH Bildu", "CC-PNC", "UPN", "Nueva Canarias", "PACMA", "VOX", "CUP", "Los Verdes", "Unidas Podemos", "EQUO", "BNG","Falange Española de las JONS", "Partido Libertario", "CHA", "Geroa Bai", "UPyD", "PI", "IGRE", "PRC", "UPL", "Más País", "En Común-Unidas Podemos", "Teruel Existe", "PDeCAT", "PNC (Partido Nacionalista Catalán)", "Otro partido", "Ninguno", "N.S", "N.C"))

colnames(tabla_cercania) <- NULL

cis$Cercania_cod <- as.factor(cis$Cercania_cod)

tabla_Cercania_cod <- rownames(table(cis$Cercania_cod))

tabla_Cercania_cod <- cbind(tabla_Cercania_cod, c("PP", "PSOE", "Podemos", "Ciudadanos", "VOX", "ERC", "JxCat", "EAJ-PNV", "Otros", "Ninguno", "NS/NC"))

colnames(tabla_Cercania_cod) <- NULL

tabla_total_Cercania <- data.frame(tabla_cercania, cbind(zoo(, 1:nrow(tabla_cercania)), as.zoo(tabla_Cercania_cod)))

colnames(tabla_total_Cercania) <- NULL

tabla_total_Cercania[,4]<-as.character(tabla_total_Cercania[,4])

tabla_total_Cercania[3,4]<-paste("Podemos", footnote_marker_number(1, "html"))

 

options(knitr.kable.NA = '')

kable(tabla_total_Cercania, position = "center", booktabs = TRUE, align = "clcl", caption = "<left><br><em>P22: Partido político por el que siente más simpatía </em></center> <left><br><em>P27: Partido que considera más cercano a sus ideas </em></center>", escape = FALSE, ) %>%

  kableExtra::footnote(number = c("Formado por la coalición de En Comú Podem, IU, EQUO, Unidas Podemos,

                    En Común - Unidas Podemos"))%>%

  kable_classic(full_width = F, html_font = "Times New Roman")%>%

  add_header_above (c("Valores iniciales" = 2, "Recodificación" = 2))%>%

  column_spec(c(1,3), width = "1cm")

 

-        Recodificación y tabla de la valoración de la situación económica de España

tabla_situ_eco<- rownames(table(cis$P13))

tabla_situ_eco <- cbind(tabla_situ_eco, c("Muy buena", "Buena", "Regular", "Mala", "Muy mala", "NS", "NC"))

colnames(tabla_situ_eco) <- NULL

cis$Situ_eco_cod <- NULL

cis <- cis %>%

  mutate(Situ_eco_cod= case_when(P13 == 1  ~ 1,

                                 P13 == 2  ~ 2,

                                 P13 == 3  ~ 3,

                                 P13 == 4  ~ 4,

                                 P13 == 5  ~ 5,

                                 P13 == 8 | P13 == 9 ~ 99))

 

cis$Situ_eco_cod <- as.factor(cis$Situ_eco_cod)

cis$Situ_eco_cod <- as.factor(cis$Situ_eco_cod)

tabla_Situ_eco_cod <- rownames(table(cis$Situ_eco_cod))

tabla_Situ_eco_cod <- cbind(tabla_Situ_eco_cod, c("Muy buena", "Buena", "Regular", "Mala", "Muy mala", "NS/NC"))

colnames(tabla_Situ_eco_cod) <- NULL

tabla_Situ_eco_cod <- as.data.frame(tabla_Situ_eco_cod)

tabla_total_Situ_eco <- data.frame(tabla_situ_eco, cbind(zoo(, 1:nrow(tabla_situ_eco)), as.zoo(tabla_Situ_eco_cod)))

colnames(tabla_total_Situ_eco) <- NULL

 

options(knitr.kable.NA = '')

kable(tabla_total_Situ_eco, position = "center", booktabs = TRUE, align = "clcl", caption = "<left><br><em> P13: Valoración de la situación económica general de España </em></center>", escape = FALSE) %>%

  kable_classic(full_width = F, html_font = "Times New Roman")%>%

  add_header_above (c("Valores iniciales" = 2, "Recodificación" = 2))%>%

  column_spec(c(1,3), width = "1cm")%>%

  column_spec(c(2,4), width = "3cm")

 

-        Recodificación y tabla de la confianza en el actual presidente del gobierno

tabla_conf_presi<- rownames(table(cis$P18))

tabla_conf_presi <- cbind(tabla_conf_presi, c("Mucha confianza", "Bastante confianza", "Poca confianza", "Ninguna confianza", "NS", "NC"))

colnames(tabla_conf_presi) <- NULL

cis$Conf_presi_cod <- NULL

cis <- cis %>%

  mutate(Conf_presi_cod= case_when(P18 == 1  ~ 1,

                                   P18 == 2  ~ 2,

                                   P18 == 3  ~ 3,

                                   P18 == 4  ~ 4,

                                   P18 == 8 | P18 == 9 ~ 99))

 

cis$Conf_presi_cod <- as.factor(cis$Conf_presi_cod)

cis$Conf_presi_cod <- as.factor(cis$Conf_presi_cod)

tabla_Conf_presi_cod <- rownames(table(cis$Conf_presi_cod))

tabla_Conf_presi_cod <- cbind(tabla_Conf_presi_cod, c("Mucha confianza", "Bastante confianza", "Poca confianza", "Ninguna confianza", "NS/NC"))

colnames(tabla_Conf_presi_cod) <- NULL

tabla_Conf_presi_cod <- as.data.frame(tabla_Conf_presi_cod)

tabla_total_Conf_presi <- data.frame(tabla_conf_presi, cbind(zoo(, 1:nrow(tabla_conf_presi)), as.zoo(tabla_Conf_presi_cod)))

colnames(tabla_total_Conf_presi) <- NULL

 

options(knitr.kable.NA = '')

kable(tabla_total_Conf_presi, position = "center", booktabs = TRUE, align = "clcl", caption = "<left><br><em> P18: Grado de confianza en el actual presidente: Pedro Sánchez </em></center> <left><br><em> P19: Grado de confianza en el principal líder de la oposición: Pablo Casado (PP) </em></center> ", escape = FALSE) %>%

  kable_classic(full_width = F, html_font = "Times New Roman")%>%

  add_header_above (c("Valores iniciales" = 2, "Recodificación" = 2))%>%

  column_spec(c(1,3), width = "1cm")%>%

  column_spec(c(2,4), width = "4cm")

 

-          Recodificación de la confianza en el líder de la oposición

tabla_conf_opo<- rownames(table(cis$P19))

tabla_conf_opo <- cbind(tabla_conf_opo, c("Mucha confianza", "Bastante confianza", "Poca confianza", "Ninguna confianza", "NS", "NC"))

colnames(tabla_conf_opo) <- NULL

cis$Conf_opo_cod <- NULL

cis <- cis %>%

  mutate(Conf_opo_cod= case_when(P19 == 1  ~ 1,

                                 P19 == 2  ~ 2,

                                 P19 == 3  ~ 3,

                                 P19 == 4  ~ 4,

                                 P19 == 8 | P19 == 9 ~ 99))

 

cis$Conf_opo_cod <- as.factor(cis$Conf_opo_cod)

 

-        Recodificación y tabla de la preferencia como presidente del gobierno

tabla_pref_presi<- rownames(table(cis$P20))

tabla_pref_presi <- cbind(tabla_pref_presi, c("Pedro Sánchez", "Pablo Casado","Santiago Abascal", "Pablo Iglesias", "Alberto Garzón", "Inés Arrimadas", "Iñigo Errejón", "Otro/a", "Ninguno/a", "NS", "NC"))

colnames(tabla_pref_presi) <- NULL

cis$Pref_presi_cod <- NULL

cis <- cis %>%

  mutate(Pref_presi_cod= case_when(P20 == 1  ~ 1,

                                   P20 == 2  ~ 2,

                                   P20 == 3  ~ 3,

                                   P20 == 4  ~ 4,

                                   P20 == 5  ~ 5,

                                   P20 == 6  ~ 6,

                                   P20 == 7  ~ 7,

                                   P20 == 96 ~ 8,

                                   P20 == 97  ~ 9,

                                   P20 == 98 | P20 == 99 ~ 99))

cis$Pref_presi_cod <- as.factor(cis$Pref_presi_cod)

cis$Pref_presi_cod <- as.factor(cis$Pref_presi_cod)

tabla_Pref_presi_cod <- rownames(table(cis$Pref_presi_cod))

tabla_Pref_presi_cod <- cbind(tabla_Pref_presi_cod, c("Pedro Sánchez", "Pablo Casado","Santiago Abascal", "Pablo Iglesias", "Alberto Garzón", "Inés Arrimadas", "Iñigo Errejón", "Otro/a", "Ninguno/a", "NS/NC"))

colnames(tabla_Pref_presi_cod) <- NULL

tabla_Pref_presi_cod <- as.data.frame(tabla_Pref_presi_cod)

tabla_total_Pref_presi <- data.frame(tabla_pref_presi, cbind(zoo(, 1:nrow(tabla_pref_presi)), as.zoo(tabla_Pref_presi_cod)))

colnames(tabla_total_Pref_presi) <- NULL

 

options(knitr.kable.NA = '')

kable(tabla_total_Pref_presi, position = "center", booktabs = TRUE, align = "clcl", caption = "<leftr><br><em> P20: Preferencia como presidente del gobierno central </em></center> ", escape = FALSE) %>%

  kable_classic(full_width = F, html_font = "Times New Roman")%>%

  add_header_above (c("Valores iniciales" = 2, "Recodificación" = 2))%>%

  column_spec(c(1,3), width = "1cm")%>%

  column_spec(c(2,4), width = "4cm")

 

-        Recodificación y tabla de la autoubicación ideológica

tabla_ideologia<- rownames(table(cis$ESCIDEOL))

tabla_ideologia <- cbind(tabla_ideologia, c("1 - Izquierda", "2", "3", "4", "5", "6", "7", "8", "9","10 - Derecha", "NS", "NC"))

colnames(tabla_ideologia) <- NULL

cis$Ideologia_cod <- NULL

cis <- cis %>%

  mutate(Ideologia_cod= case_when(ESCIDEOL == 1 ~ 1,

                                  ESCIDEOL == 2 ~ 2,

                                  ESCIDEOL == 3 ~ 3,

                                  ESCIDEOL == 4 ~ 4,

                                  ESCIDEOL == 5 ~ 5,

                                  ESCIDEOL == 6 ~ 6,

                                  ESCIDEOL == 7 ~ 7,

                                  ESCIDEOL == 8 ~ 8,

                                  ESCIDEOL == 9 ~ 9,

                                  ESCIDEOL == 10 ~ 10,

                                  ESCIDEOL == 98 | ESCIDEOL == 99 ~ 99))

 

cis$Ideologia_cod <- as.factor(cis$Ideologia_cod)

cis$Ideologia_cod <- as.factor(cis$Ideologia_cod)

tabla_Ideologia_cod <- rownames(table(cis$Ideologia_cod))

tabla_Ideologia_cod <- cbind(tabla_Ideologia_cod, c("1 - Izquierda", "2", "3", "4", "5", "6", "7", "8", "9","10 - Derecha", "NS/NC"))

colnames(tabla_Ideologia_cod) <- NULL

tabla_Ideologia_cod <- as.data.frame(tabla_Ideologia_cod)

tabla_total_ideologia <- data.frame(tabla_ideologia, cbind(zoo(, 1:nrow(tabla_ideologia)), as.zoo(tabla_Ideologia_cod)))

colnames(tabla_total_ideologia) <- NULL

 

options(knitr.kable.NA = '')

kable(tabla_total_ideologia, position = "center", booktabs = TRUE, align = "clcl", caption = "<left><em>P23: Escala de autoubicación ideológica (1-10) </em></center>", escape = FALSE) %>%

  kable_classic(full_width = F, html_font = "Times New Roman")%>%

  add_header_above (c("Valores iniciales" = 2, "Recodificación" = 2))%>%

  column_spec(c(1,3), width = "1cm")%>%

  column_spec(c(2,4), width = "5cm")

 

-        Recodificación y tabla de la clasificación ideológica de los líderes políticos

#Misma codificación que ideología, nueva categoría -> No conoce

#Pedro Sánchez

cis$Ideologia_ps_cod <- NULL

cis <- cis %>%

  mutate(Ideologia_ps_cod= case_when(ESCIDEOLPOLI_1 == 1 ~ 1,

                                     ESCIDEOLPOLI_1 == 2 ~ 2,

                                     ESCIDEOLPOLI_1 == 3 ~ 3,

                                     ESCIDEOLPOLI_1 == 4 ~ 4,

                                     ESCIDEOLPOLI_1 == 5 ~ 5,

                                     ESCIDEOLPOLI_1 == 6 ~ 6,

                                     ESCIDEOLPOLI_1 == 7 ~ 7,

                                     ESCIDEOLPOLI_1 == 8 ~ 8,

                                     ESCIDEOLPOLI_1 == 9 ~ 9,

                                     ESCIDEOLPOLI_1 == 10 ~ 10,

                                     ESCIDEOLPOLI_1 == 97 ~ 11,

                                     ESCIDEOLPOLI_1 == 98 | ESCIDEOLPOLI_1 == 99 ~ 99))

cis$Ideologia_ps_cod <- as.factor(cis$Ideologia_ps_cod)

cis$Ideologia_pc_cod <- NULL

cis <- cis %>%

  mutate(Ideologia_pc_cod= case_when(ESCIDEOLPOLI_2 == 1 ~ 1,

                                     ESCIDEOLPOLI_2 == 2 ~ 2,

                                     ESCIDEOLPOLI_2 == 3 ~ 3,

                                     ESCIDEOLPOLI_2 == 4 ~ 4,

                                     ESCIDEOLPOLI_2 == 5 ~ 5,

                                     ESCIDEOLPOLI_2 == 6 ~ 6,

                                     ESCIDEOLPOLI_2 == 7 ~ 7,

                                     ESCIDEOLPOLI_2 == 8 ~ 8,

                                     ESCIDEOLPOLI_2 == 9 ~ 9,

                                     ESCIDEOLPOLI_2 == 10 ~ 10,

                                     ESCIDEOLPOLI_2 == 97 ~ 11,

                                     ESCIDEOLPOLI_2 == 98 | ESCIDEOLPOLI_2 == 99 ~ 99))

cis$Ideologia_pc_cod <- as.factor(cis$Ideologia_pc_cod)

 

#Pablo Casado

cis$Ideologia_pi_cod <- NULL

cis <- cis %>%

  mutate(Ideologia_pi_cod= case_when(ESCIDEOLPOLI_3 == 1 ~ 1,

                                     ESCIDEOLPOLI_3 == 2 ~ 2,

                                     ESCIDEOLPOLI_3 == 3 ~ 3,

                                     ESCIDEOLPOLI_3 == 4 ~ 4,

                                     ESCIDEOLPOLI_3 == 5 ~ 5,

                                     ESCIDEOLPOLI_3 == 6 ~ 6,

                                     ESCIDEOLPOLI_3 == 7 ~ 7,

                                     ESCIDEOLPOLI_3 == 8 ~ 8,

                                     ESCIDEOLPOLI_3 == 9 ~ 9,

                                     ESCIDEOLPOLI_3 == 10 ~ 10,

                                     ESCIDEOLPOLI_3 == 97 ~ 11,

                                     ESCIDEOLPOLI_3 == 98 | ESCIDEOLPOLI_3 == 99 ~ 99))

cis$Ideologia_pi_cod <- as.factor(cis$Ideologia_pi_cod)

 

#Santiago Abascal

cis$Ideologia_sa_cod <- NULL

cis <- cis %>%

  mutate(Ideologia_sa_cod= case_when(ESCIDEOLPOLI_4 == 1 ~ 1,

                                     ESCIDEOLPOLI_4 == 2 ~ 2,

                                     ESCIDEOLPOLI_4 == 3 ~ 3,

                                     ESCIDEOLPOLI_4 == 4 ~ 4,

                                     ESCIDEOLPOLI_4 == 5 ~ 5,

                                     ESCIDEOLPOLI_4 == 6 ~ 6,

                                     ESCIDEOLPOLI_4 == 7 ~ 7,

                                     ESCIDEOLPOLI_4 == 8 ~ 8,

                                     ESCIDEOLPOLI_4 == 9 ~ 9,

                                     ESCIDEOLPOLI_4 == 10 ~ 10,

                                     ESCIDEOLPOLI_4 == 97 ~ 11,

                                     ESCIDEOLPOLI_4 == 98 | ESCIDEOLPOLI_4 == 99 ~ 99))

cis$Ideologia_sa_cod <- as.factor(cis$Ideologia_sa_cod)

 

#Inés Arrimadas

tabla_ideologia_ia<- rownames(table(cis$ESCIDEOLPOLI_5))

tabla_ideologia_ia <- cbind(tabla_ideologia_ia, c("1 - Izquierda", "2", "3", "4", "5", "6", "7", "8", "9","10 - Derecha", "No conoce", "NS", "NC"))

colnames(tabla_ideologia_ia) <- NULL

cis$Ideologia_ia_cod <- NULL

cis <- cis %>%

  mutate(Ideologia_ia_cod= case_when(ESCIDEOLPOLI_5 == 1 ~ 1,

                                     ESCIDEOLPOLI_5 == 2 ~ 2,

                                     ESCIDEOLPOLI_5 == 3 ~ 3,

                                     ESCIDEOLPOLI_5 == 4 ~ 4,

                                     ESCIDEOLPOLI_5 == 5 ~ 5,

                                     ESCIDEOLPOLI_5 == 6 ~ 6,

                                     ESCIDEOLPOLI_5 == 7 ~ 7,

                                     ESCIDEOLPOLI_5 == 8 ~ 8,

                                     ESCIDEOLPOLI_5 == 9 ~ 9,

                                     ESCIDEOLPOLI_5 == 10 ~ 10,

                                     ESCIDEOLPOLI_5 == 97 ~ 11,

                                     ESCIDEOLPOLI_5 == 98 | ESCIDEOLPOLI_5 == 99 ~ 99))

cis$Ideologia_ia_cod <- as.factor(cis$Ideologia_ia_cod)

cis$Ideologia_ia_cod <- as.factor(cis$Ideologia_ia_cod)

tabla_Ideologia_ia_cod <- rownames(table(cis$Ideologia_ia_cod))

tabla_Ideologia_ia_cod <- cbind(tabla_Ideologia_ia_cod, c("1 - Izquierda", "2", "3", "4", "5", "6", "7", "8", "9","10 - Derecha", "No conoce", "NS/NC"))

colnames(tabla_Ideologia_ia_cod) <- NULL

 

 

 

tabla_Ideologia_ia_cod <- as.data.frame(tabla_Ideologia_ia_cod)

 

tabla_total_ideologia_ia <- data.frame(tabla_ideologia_ia, cbind(zoo(, 1:nrow(tabla_ideologia_ia)), as.zoo(tabla_Ideologia_ia_cod)))

colnames(tabla_total_ideologia_ia) <- NULL

 

options(knitr.kable.NA = '')

kable(tabla_total_ideologia_ia, position = "center", booktabs = TRUE, align = "clcl", caption = "<left><br><em>P24: Escala de ubicación ideológica (1-10) de líderes políticos nacionales: *Pedro Sánchez * Pablo Casado * Pablo Iglesias * Santiago Abascal * Inés Arrimadas </em></center>", escape = FALSE) %>%

  kable_classic(full_width = F, html_font = "Times New Roman")%>%

  add_header_above (c("Valores iniciales" = 2, "Recodificación" = 2))%>%

  column_spec(c(1,3), width = "1cm")%>%

  column_spec(c(2,4), width = "3cm")

 

-        Recodificación y tabla de la valoración de los líderes políticos

#Pedro Sánchez

tabla_valoracion_ps<- rownames(table(cis$P25_1))

tabla_valoracion_ps <- cbind(tabla_valoracion_ps, c("1 - Muy mal", "2", "3", "4", "5", "6", "7", "8", "9", "10 - Muy bien ", "No conoce", "NS", "NC"))

colnames(tabla_valoracion_ps) <- NULL

cis$Valoracion_ps_cod <- NULL

cis <- cis %>%

  mutate(Valoracion_ps_cod= case_when(P25_1 == 1 | P25_1 == 2 ~ 1,

                                      P25_1 == 3 | P25_1 == 4 ~ 2,

                                      P25_1 == 5 | P25_1 == 6 ~ 3,

                                      P25_1 == 7 | P25_1 == 8 ~ 4,

                                      P25_1 == 9 | P25_1 == 10 ~ 5,

                                      P25_1 == 97 ~ 6,

                                      P25_1 == 98 | P25_1 == 99 ~ 99))

cis$Valoracion_ps_cod <- as.factor(cis$Valoracion_ps_cod)

tabla_Valoracion_ps_cod <- rownames(table(cis$Valoracion_ps_cod))

tabla_Valoracion_ps_cod <- cbind(tabla_Valoracion_ps_cod, c("Muy mal", "Mal", "Regular", "Bien", "Muy bien", "No conoce", "NS/NC"))

colnames(tabla_Valoracion_ps_cod) <- NULL

tabla_Valoracion_ps_cod <- as.data.frame(tabla_Valoracion_ps_cod)

tabla_total_valoracion <- data.frame(tabla_valoracion_ps, cbind(zoo(, 1:nrow(tabla_valoracion_ps)), as.zoo(tabla_Valoracion_ps_cod)))

colnames(tabla_total_valoracion) <- NULL

 

tabla_total_valoracion[,4]<-as.character(tabla_total_valoracion[,4])

tabla_total_valoracion[1,4]<-paste("Muy mal", footnote_marker_number(1, "html"))

tabla_total_valoracion[2,4]<-paste("Mal", footnote_marker_number(2, "html"))

tabla_total_valoracion[3,4]<-paste("Regular", footnote_marker_number(3, "html"))

tabla_total_valoracion[4,4]<-paste("Bien", footnote_marker_number(2, "html"))

tabla_total_valoracion[5,4]<-paste("Muy bien", footnote_marker_number(3, "html"))

 

options(knitr.kable.NA = '')

kable(tabla_total_valoracion, position = "center", booktabs = TRUE, align = "clcl", caption = "<left><em>P25: Escala de valoración (1-10) de líderes políticos nacionales: *Pedro Sánchez * Pablo Casado * Pablo Iglesias * Santiago Abascal * Inés Arrimadas </em></center>", escape = FALSE) %>%

  kableExtra::footnote(number = c("Valoración entre 1 y 2", "Valoración entre 3 y 4", "Valoración entre 5 y 6", "Valoración entre 7 y 8", "Valoración entre 9 y 10"))%>%

  kable_classic(full_width = F, html_font = "Times New Roman")%>%

  add_header_above (c("Valores iniciales" = 2, "Recodificación" = 2))%>%

  column_spec(c(1,3), width = "1cm")%>%

  column_spec(c(2,4), width = "4cm")

 

#Pablo Casado

cis$Valoracion_pc_cod <- NULL

cis <- cis %>%

  mutate(Valoracion_pc_cod= case_when(P25_2 == 1 | P25_2 == 2 ~ 1,

                                      P25_2 == 3 | P25_2 == 4 ~ 2,

                                      P25_2 == 5 | P25_2 == 6 ~ 3,

                                      P25_2 == 7 | P25_2 == 8 ~ 4,

                                      P25_2 == 9 | P25_2 == 10 ~ 5,

                                      P25_2 == 97 ~ 6,

                                      P25_2 == 98 | P25_2 == 99 ~ 99))

cis$Valoracion_pc_cod <- as.factor(cis$Valoracion_pc_cod)

 

#Pablo Iglesias

cis$Valoracion_pi_cod <- NULL

cis <- cis %>%

  mutate(Valoracion_pi_cod= case_when(P25_3 == 1 | P25_3 == 2 ~ 1,

                                      P25_3 == 3 | P25_3 == 4 ~ 2,

                                      P25_3 == 5 | P25_3 == 6 ~ 3,

                                      P25_3 == 7 | P25_3 == 8 ~ 4,

                                      P25_3 == 9 | P25_3 == 10 ~ 5,

                                      P25_3 == 97 ~ 6,

                                      P25_3 == 98 | P25_3 == 99 ~ 99))

 

cis$Valoracion_pi_cod <- as.factor(cis$Valoracion_pi_cod)

 

#Santiago Abascal

cis$Valoracion_sa_cod <- NULL

cis <- cis %>%

  mutate(Valoracion_sa_cod= case_when(P25_4 == 1 | P25_4 == 2 ~ 1,

                                      P25_4 == 3 | P25_4 == 4 ~ 2,

                                      P25_4 == 5 | P25_4 == 6 ~ 3,

                                      P25_4 == 7 | P25_4 == 8 ~ 4,

                                      P25_4 == 9 | P25_4 == 10 ~ 5,

                                      P25_4 == 97 ~ 6,

                                      P25_4 == 98 | P25_4 == 99 ~ 99))

 

cis$Valoracion_sa_cod <- as.factor(cis$Valoracion_sa_cod)

 

#Inés Arrimadas

cis$Valoracion_ia_cod <- NULL

cis <- cis %>%

  mutate(Valoracion_ia_cod= case_when(P25_5 == 1 | P25_5 == 2 ~ 1,

                                      P25_5 == 3 | P25_5 == 4 ~ 2,

                                      P25_5 == 5 | P25_5 == 6 ~ 3,

                                      P25_5 == 7 | P25_5 == 8 ~ 4,

                                      P25_5 == 9 | P25_5 == 10 ~ 5,

                                      P25_5 == 97 ~ 6,

                                      P25_5 == 98 | P25_5 == 99 ~ 99))

 

cis$Valoracion_ia_cod <- as.factor(cis$Valoracion_ia_cod)

 

-        Recodificación y tabla de la participación en las elecciones generales de 2019

tabla_participacion<- rownames(table(cis$PARTICIPACIONG))

tabla_participacion <- cbind(tabla_participacion, c("Fue a votar y votó", "No tenía edad para votar", "Fue a votar pero no pudo hacerlo", "No fue a votar porque no pudo", "Prefirió no votar", "No tenía derecho a voto", "Votó por correo", "No recuerda/NS", "NC"))

colnames(tabla_participacion) <- NULL

cis$Participacion_cod <- NULL

cis <- cis %>%

  mutate(Participacion_cod= case_when(PARTICIPACIONG == 1 | PARTICIPACIONG == 7 ~ 1,

                                      PARTICIPACIONG == 3 | PARTICIPACIONG == 4 | PARTICIPACIONG == 5 ~ 2,

                                      PARTICIPACIONG == 2 | PARTICIPACIONG == 6 ~ 3,

                                      PARTICIPACIONG == 9 | PARTICIPACIONG == 8 ~ 99))

 

cis$Participacion_cod <- as.factor(cis$Participacion_cod)

cis$Participacion_cod <- as.factor(cis$Participacion_cod)

tabla_Participacion_cod <- rownames(table(cis$Participacion_cod))

tabla_Participacion_cod <- cbind(tabla_Participacion_cod, c("Votó", "No votó", "No tenía derecho a voto", "NS/NC"))

colnames(tabla_Participacion_cod) <- NULL

tabla_Participacion_cod <- as.data.frame(tabla_Participacion_cod)

tabla_total_participacion <- data.frame(tabla_participacion, cbind(zoo(, 1:nrow(tabla_participacion)), as.zoo(tabla_Participacion_cod)))

colnames(tabla_total_participacion) <- NULL

tabla_total_participacion[,4]<-as.character(tabla_total_participacion[,4])

tabla_total_participacion[1,4]<-paste("Votó", footnote_marker_number(1, "html"))

tabla_total_participacion[2,4]<-paste("No votó", footnote_marker_number(2, "html"))

tabla_total_participacion[3,4]<-paste("No tenía derecho a voto", footnote_marker_number(3, "html"))

 

options(knitr.kable.NA = '')

kable(tabla_total_participacion, position = "center", booktabs = TRUE, align = "clcl", caption = "<leftr><em>P26: Participación electoral en las anteriores elecciones generales (nov. 2019) </em></center>", escape = FALSE) %>%

  kableExtra::footnote(number = c("Fue a votar y votó; Votó por correo", "Fue a votar pero no pudo hacerlo; No fue a votar porque no pudo", "No tenía edad para votar; No tenía derecho a voto"))%>%

  kable_classic(full_width = F, html_font = "Times New Roman")%>%

  add_header_above (c("Valores iniciales" = 2, "Recodificación" = 2))%>%

  column_spec(c(1,3), width = "1cm")%>%

  column_spec(c(4), width = "6cm")

colSums(is.na(cis))

cis2 <- cis %>% select(SEXO, CCAA, Edad_grupos,P0,Situ_eco_cod, Estudios, Religion_cod, civil_cod,Situ, clase_cod, Conf_presi_cod, Conf_opo_cod, Pref_presi_cod, Voto_cod, Voto_alternativo_cod, Simpatia_cod, Ideologia_cod, Ideologia_ps_cod, Ideologia_pc_cod, Ideologia_pi_cod, Ideologia_sa_cod, Ideologia_ia_cod, Valoracion_ps_cod, Valoracion_pc_cod, Valoracion_pi_cod, Valoracion_sa_cod, Valoracion_ia_cod, Participacion_cod, Recuerdo_cod, Cercania_cod)

 

-        Resumen de variables

cis_nombre <- cis2

cis_nombre$SEXO <- factor(cis_nombre$SEXO, labels = c("Hombre", "Mujer"))

cis_nombre$CCAA <- factor(cis_nombre$CCAA, labels = c("Andalucía", "Aragón", "Asturias (Principado de)", "Baleares (Illes)", "Canarias", "Cantabria", "Castilla-La Mancha", "Castilla y León", "Cataluña", "Comunitat Valenciana", "Extremadura", "Galicia", "Madrid (Comunidad de)", "Murcia (Región de)", "Navarra (Comunidad Floral de)", "País Vasco", "Rioja (La)", "Ceuta (Ciudad Autónoma de)", "Melilla (Ciudad Autónoma de)"))

cis_nombre$Edad_grupos <- factor(cis_nombre$Edad_grupos, labels = c("De 18 a 24 años", "De 25 a 34 años", "De 35 a 44 años", "De 45 a 54 años", "De 55 a 64 años","Más de 65 años"))

cis_nombre$P0 <- factor(cis_nombre$P0, labels = c("Nacionalidad española", "Nacionalidad española y otra"))

cis_nombre$Situ <- factor(cis_nombre$Situ, labels = c("Trabajadores", "Jubilados o pensionistas", "Parados", "Estudiantes", "Trabajo doméstico no remunerado", "Otra situación", "NC"))

cis_nombre$Estudios <- factor(cis_nombre$Estudios, labels = c("Sin estudios / Estudios Primarios", "Estudios Secundarios / Formación Profesional", "Estudios Superiores", "Otros estudios", "NS/NC"))

cis_nombre$Religion_cod <- factor(cis_nombre$Religion_cod, labels = c("Católico", "Creyente de otra religión", "No creyente", "Ateo/a", "NC"))

cis_nombre$civil_cod <- factor(cis_nombre$civil_cod, labels = c("Casado/a", "Soltero/a", "Viudo/a", "NC"))

cis_nombre$Situ_eco_cod <- factor(cis_nombre$Situ_eco_cod, labels = c("Muy buena", "Buena", "Regular", "Mala", "Muy mala", "NS/NC"))

cis_nombre$clase_cod <- factor(cis_nombre$clase_cod, labels = c("Clase alta", "Clase media", "Clase baja", "Otra clase", "No cree en las clases", "NS/NC"))

cis_nombre$Conf_presi_cod <- factor(cis_nombre$Conf_presi_cod, labels = c("Mucha confianza", "Bastante confianza", "Poca confianza", "Ninguna confianza", "NS/NC"))

cis_nombre$Conf_opo_cod <- factor(cis_nombre$Conf_opo_cod, labels = c("Mucha confianza", "Bastante confianza", "Poca confianza", "Ninguna confianza", "NS/NC"))

cis_nombre$Pref_presi_cod <- factor(cis_nombre$Pref_presi_cod, labels = c("Pedro Sánchez", "Pablo Casado","Santiago Abascal", "Pablo Iglesias", "Alberto Garzón", "Inés Arrimadas", "Iñigo Errejón", "Otro/a", "Ninguno/a", "NS/NC"))

cis_nombre$Voto_cod <- factor(cis_nombre$Voto_cod, labels = c("PP", "PSOE", "Podemos", "Ciudadanos", "VOX", "ERC", "JxCat", "EAJ-PNV", "Otros", "Abstención", "NS/NC"))

cis_nombre$Voto_alternativo_cod <- factor(cis_nombre$Voto_alternativo_cod, labels = c("PP", "PSOE", "Podemos", "Ciudadanos", "VOX", "ERC", "JxCat", "EAJ-PNV", "Otros", "No votaría a ningún otro partido", "Abstención", "NS/NC"))

cis_nombre$Simpatia_cod <- factor(cis_nombre$Simpatia_cod, labels = c("PP", "PSOE", "Podemos", "Ciudadanos", "VOX", "ERC", "JxCat", "EAJ-PNV", "Otros", "Ninguno", "NS/NC"))

cis_nombre$Ideologia_cod <- factor(cis_nombre$Ideologia_cod, labels = c("1 - Izquierda", "2", "3", "4", "5", "6", "7", "8", "9","10 - Derecha", "NS/NC"))

cis_nombre$Ideologia_ps_cod <- factor(cis_nombre$Ideologia_ps_cod, labels = c("1 - Izquierda", "2", "3", "4", "5", "6", "7", "8", "9","10 - Derecha", "No conoce", "NS/NC"))

cis_nombre$Ideologia_pc_cod <- factor(cis_nombre$Ideologia_pc_cod, labels = c("1 - Izquierda", "2", "3", "4", "5", "6", "7", "8", "9","10 - Derecha", "No conoce", "NS/NC"))

cis_nombre$Ideologia_pi_cod <- factor(cis_nombre$Ideologia_pi_cod, labels = c("1 - Izquierda", "2", "3", "4", "5", "6", "7", "8", "9","10 - Derecha", "No conoce", "NS/NC"))

cis_nombre$Ideologia_sa_cod <- factor(cis_nombre$Ideologia_sa_cod, labels = c("1 - Izquierda", "2", "3", "4", "5", "6", "7", "8", "9","10 - Derecha", "No conoce", "NS/NC"))

cis_nombre$Ideologia_ia_cod <- factor(cis_nombre$Ideologia_ia_cod, labels = c("1 - Izquierda", "2", "3", "4", "5", "6", "7", "8", "9","10 - Derecha", "No conoce", "NS/NC"))

cis_nombre$Valoracion_ps_cod <- factor(cis_nombre$Valoracion_ps_cod, labels = c("Muy mal", "Mal", "Regular", "Bien", "Muy bien", "No conoce", "NS/NC"))

cis_nombre$Valoracion_pc_cod <- factor(cis_nombre$Valoracion_pc_cod, labels = c("Muy mal", "Mal", "Regular", "Bien", "Muy bien", "No conoce", "NS/NC"))

cis_nombre$Valoracion_pi_cod <- factor(cis_nombre$Valoracion_pi_cod, labels = c("Muy mal", "Mal", "Regular", "Bien", "Muy bien", "No conoce", "NS/NC"))

cis_nombre$Valoracion_sa_cod <- factor(cis_nombre$Valoracion_sa_cod, labels = c("Muy mal", "Mal", "Regular", "Bien", "Muy bien", "No conoce", "NS/NC"))

cis_nombre$Valoracion_ia_cod <- factor(cis_nombre$Valoracion_ia_cod, labels = c("Muy mal", "Mal", "Regular", "Bien", "Muy bien", "No conoce", "NS/NC"))

cis_nombre$Participacion_cod <- factor(cis_nombre$Participacion_cod, labels = c("Votó", "No votó", "No tenía derecho a voto", "NS/NC"))

cis_nombre$Recuerdo_cod <- factor(cis_nombre$Recuerdo_cod, labels = c("PP", "PSOE", "Podemos", "Ciudadanos", "VOX", "ERC", "JxCat", "EAJ-PNV", "Otros", "Abstención", "No fué a votar", "NS/NC"))

cis_nombre$Cercania_cod <- factor(cis_nombre$Cercania_cod, labels = c("PP", "PSOE", "Podemos", "Ciudadanos", "VOX", "ERC", "JxCat", "EAJ-PNV", "Otros", "Ninguno", "NS/NC"))

 

kable(summary(cis_nombre, maxsum = 7)[,1:6], position = "center", booktabs = TRUE, align = rep("c",10), caption = "<leftr><em> Resumen variables (1-6) </em></center>", escape = FALSE, col.names = c("Sexo", "Comunidad Autónoma", "Edad", "Nacionalidad", "Valoración Situación económica", "Nivel de estudios"), font_size = 20) %>%

  kable_classic(full_width = T, html_font = "Times New Roman")%>%

  column_spec(c(2:7), width = "2cm")%>%

  column_spec(c(1), width = "0.5cm")

 

kable(summary(cis_nombre, maxsum = 12)[,7:12], position = "center", booktabs = TRUE, align = rep("c",10), caption = "<leftr><em> Resumen variables (7-12) </em></center>", escape = FALSE, col.names = c("Religión", "Estado civil", "Situación laboral", "Clase social", "Confianza en el presidente", "Confianza en la oposición"), font_size = 20) %>%

  kable_classic(full_width = F, html_font = "Times New Roman")%>%

  column_spec(2:7, width = "4cm")%>%

  column_spec(c(1), width = "0.5cm")

 

kable(summary(cis_nombre, maxsum = 12)[,13:18], position = "center", booktabs = TRUE, align = rep("c",10), caption = "<leftr><em> Resumen variables (13-18) </em></center>", escape = FALSE, col.names = c("Preferencia de presidente", "Intención de voto", "Intención de voto alternativo", "Simpatía partidista", "Ideología", "Clasificación ideológica PS"), font_size = 20) %>%

  kable_classic(full_width = F, html_font = "Times New Roman")%>%

  column_spec(1:7, width = "6cm")%>%

  column_spec(c(1), width = "0.5cm")

 

kable(summary(cis_nombre, maxsum = 12)[,19:24], position = "center", booktabs = TRUE, align = rep("c",10), caption = "<leftr><em> Resumen variables (19-24) </em></center>", escape = FALSE, col.names = c("Clasificación ideológica PC", "Clasificación ideológica PI", "Clasificación ideológica SA", "Clasificación ideológica IA", "Valoración PS", "Valoración PC"), font_size = 20) %>%

  kable_classic(full_width = F, html_font = "Times New Roman")%>%

  column_spec(1:7, width = "6cm")%>%

  column_spec(c(1), width = "0.5cm")

 

kable(summary(cis_nombre, maxsum = 12)[,25:30], position = "center", booktabs = TRUE, align = rep("c",10), caption = "<leftr><em> Resumen variables (25-30) </em></center>", escape = FALSE, col.names = c("Valoración PI", "Valoración SA", "Valoración IA", "Participación electoral 2019", "Recuerdo de voto 2019", "Cercanía partidista")) %>%

  kable_classic(full_width = F, html_font = "Times New Roman")%>%

  column_spec(1:7, width = "6cm")%>%

  column_spec(c(1), width = "0.5cm")

 

-        Gráfico de respuestas NS/NC

cis_resumen <- cis2

cis_resumen[cis_resumen == "99"] <- NA

sort(colSums(is.na(cis_resumen)))

colnames(cis_resumen) <- c("Sexo", "Comunidad Autónoma", "Edad", "Nacionalidad", "Valoración Situación económica", "Nivel de estudios", "Religión", "Estado civil", "Situación laboral", "Clase social", "Confianza en el presidente", "Confianza en la oposición", "Preferencia de presidente", "Intención de voto", "Intención de voto alternativo", "Simpatía partidista", "Ideología", "Ideología PS", "Ideología PC", "Ideología PI", "Ideología SA", "Ideología IA", "Valoración PS", "Valoración PC", "Valoración PI", "Valoración SA", "Valoración IA", "Participación electoral 2019", "Recuerdo de voto 2019", "Cercanía partidista")

plot_missing_2 <-

  function (data, group = list(Muy_bajo = 0.05, Bajo = 0.2, Elevado = 0.8,

                               Muy_elevado =  1), geom_label_args = list(), title = NULL, ggtheme = theme_gray(),

            theme_config = list(legend.position = c("bottom"), text=element_text(family="Times", size=20), plot.title = element_text(face = "bold.italic", hjust = -0.4, color = "darkgray" )))

  {

    pct_missing <- Escala <- NULL

    missing_value <- data.table(profile_missing(data))

    group <- group[sort.list(unlist(group))]

    invisible(lapply(seq_along(group), function(i) {

      if (i == 1) {

        missing_value[pct_missing <= group[[i]], `:=`(Escala,

                                                      names(group)[i])]

      } else {

        missing_value[pct_missing > group[[i - 1]] & pct_missing <=

                        group[[i]], `:=`(Escala, names(group)[i])]

      }

    }))

    output <- ggplot(missing_value, aes_string(x = "feature",

                                               y = "num_missing", fill = "Escala")) + geom_bar(stat = "identity") +

      scale_fill_manual("Escala", values = c("Muy_elevado"="firebrick2", "Bajo"="#9ECAE1", "Elevado"="#3182BD", "Muy_bajo"="#DEEBF7")) + coord_flip() + xlab("Atributos") +

      ylab("Número de respuestas NS/NC")

    geom_label_args_list <- list(mapping = aes(label = paste0(round(100 *

                                                                      pct_missing, 2), "%")))

    output <- output + do.call("geom_label", c(geom_label_args_list,

                                               geom_label_args))

    class(output) <- c("single", class(output))

    plotDataExplorer(plot_obj = output, title = title, ggtheme = ggtheme,

                     theme_config = theme_config)

  }

plot_missing_2(cis_resumen, ggtheme = theme_classic(), title = "Respuestas NS/NC por atributo")

sort(colSums(cis2 == "99"))

 

-        Diagrama de barras de la intención de voto

library(cowplot)

library(RColorBrewer)

my.palette <- brewer.pal(n = 7, name = "PuBu")

cis$Voto_cod2 <- factor(cis$Voto_cod, labels = c("PP", "PSOE", "Podemos", "Ciudadanos", "VOX", "ERC", "JxCat", "EAJ-PNV", "Otros", "Abstención", "NS/NC"))

ggplot(cis)+ geom_bar(aes(x=Voto_cod2, y=..count../length(cis$Voto_cod)

                          ,fill = ..count..), col = "white") + labs(x=" ", y= "Recuento") + ggtitle("Intención de voto") + scale_fill_gradientn(colours = my.palette, name = "Recuento") + theme(plot.title = element_text(hjust = 0.5))+ theme(panel.border = element_blank(),

                                                                                                                                                                                                                                                panel.background = element_blank(),  text=element_text(family="Times", size = 15)) + theme(plot.title = element_text(face = "italic", hjust = 0))

 

-        Diagrama de barras de la valoración de los líderes políticos en función de la intención de voto

# Pedro Sánchez

 library(ggplot2)

library(RColorBrewer)

my.palette_sa <- brewer.pal("BuGn", n = 7)

cis$Valoracion_ps_cod2 <- factor(cis$Valoracion_ps_cod, labels = c("Muy mal", "Mal", "Regular", "Bien", "Muy bien", "No conoce", "NS/NC"))

cis$Voto_cod2 <- factor(cis$Voto_cod, labels = c("PP", "PSOE", "Podemos", "Ciudadanos", "VOX", "ERC", "JxCat", "EAJ-PNV", "Otros", "Abstención", "NS/NC"))

 

plot_val_1 <- ggplot(cis, aes(x = Voto_cod2, fill = Valoracion_ps_cod2)) + labs(x=" ", y= "Recuento", fill = "Valoración PS") + ggtitle("Valoración Pedro Sánchez - Intención de Voto")+

  geom_bar()+scale_fill_manual(values=my.palette_sa)+ theme(plot.title = element_text(face = "italic", hjust = 0))+ theme(panel.border = element_blank(),

                                                                                                                          panel.background = element_blank(),  text=element_text(family="Times", size = 10))

plot_val_1

 

# Pablo Casado

cis$Valoracion_pc_cod2 <- factor(cis$Valoracion_pc_cod, labels = c("Muy mal", "Mal", "Regular", "Bien", "Muy bien", "No conoce", "NS/NC"))

plot_val_2 <- ggplot(cis, aes(x = Voto_cod2, fill = Valoracion_pc_cod2)) + labs(x=" ", y= "Recuento", fill = "Valoración PC") + ggtitle("Valoración Pablo Casado - Intención de Voto")+

  geom_bar()+scale_fill_manual(values=my.palette_sa)+ theme(plot.title = element_text(face = "italic", hjust = 0))+ theme(panel.border = element_blank(),

                                                                                                                          panel.background = element_blank(),  text=element_text(family="Times", size = 10))

 

# Pablo Iglesias

cis$Valoracion_pi_cod2 <- factor(cis$Valoracion_pi_cod, labels = c("Muy mal", "Mal", "Regular", "Bien", "Muy bien", "No conoce", "NS/NC"))

plot_val_3 <- ggplot(cis, aes(x = Voto_cod2, fill = Valoracion_pi_cod2)) + labs(x=" ", y= "Recuento", fill = "Valoración PI") + ggtitle("Valoración Pablo Iglesias - Intención de Voto")+

  geom_bar()+scale_fill_manual(values=my.palette_sa)+ theme(plot.title = element_text(face = "italic", hjust = 0))+ theme(panel.border = element_blank(),

                                                                                                                          panel.background = element_blank(),  text=element_text(family="Times", size = 10))

 

#Santiago Abascal

cis$Valoracion_sa_cod2 <- factor(cis$Valoracion_sa_cod, labels = c("Muy mal", "Mal", "Regular", "Bien", "Muy bien", "No conoce", "NS/NC"))

plot_val_4 <- ggplot(cis, aes(x = Voto_cod2, fill = Valoracion_sa_cod2)) + labs(x=" ", y= "Recuento", fill = "Valoración SA") + ggtitle("Valoración Santiago Abascal - Intención de Voto")+

  geom_bar()+scale_fill_manual(values=my.palette_sa)+ theme(plot.title = element_text(face = "italic", hjust = 0))+ theme(panel.border = element_blank(),

                                                                                                                          panel.background = element_blank(),  text=element_text(family="Times", size = 10))

 

#Inés Arrimadas

cis$Valoracion_ia_cod2 <- factor(cis$Valoracion_ia_cod, labels = c("Muy mal", "Mal", "Regular", "Bien", "Muy bien", "No conoce", "NS/NC"))

ggplot(cis, aes(x = Voto_cod2, fill = Valoracion_ia_cod2)) + labs(x=" ", y= "Recuento", fill = "Valoración IA") + ggtitle("Valoración Inés Arrimadas - Intención de Voto")+

  geom_bar()+scale_fill_manual(values=my.palette_sa)+ theme(plot.title = element_text(face = "italic", hjust = 0))+ theme(panel.border = element_blank(),

                                                                                                                          panel.background = element_blank(),  text=element_text(family="Times", size = 11))

library(gridExtra)

library(grid)

grid.arrange(plot_val_1, plot_val_2, plot_val_3, plot_val_4, ncol = 2)

 

-        Diagrama de barras de la clasificación ideológica de los líderes políticos en función de la intención de voto

par(family = 'serif')

cis$Ideologia_ia_cod2 <- factor(cis$Ideologia_ia_cod, labels = c("1- I", "2", "3", "4", "5", "6", "7", "8", "9", "10-D", "No concoce", "NS/NC"))

cis$Ideologia_ps_cod2 <- factor(cis$Ideologia_ps_cod, labels = c("1- I", "2", "3", "4", "5", "6", "7", "8", "9", "10-D", "No concoce", "NS/NC"))

cis$Ideologia_pc_cod2 <- factor(cis$Ideologia_pc_cod, labels = c("1- I", "2", "3", "4", "5", "6", "7", "8", "9", "10-D", "No concoce", "NS/NC"))

cis$Ideologia_pi_cod2 <- factor(cis$Ideologia_pi_cod, labels = c("1- I", "2", "3", "4", "5", "6", "7", "8", "9", "10-D", "No concoce", "NS/NC"))

cis$Ideologia_sa_cod2 <- factor(cis$Ideologia_sa_cod, labels = c("1- I", "2", "3", "4", "5", "6", "7", "8", "9", "10-D", "No concoce", "NS/NC"))

library(grid)

library(gridExtra)

library(ggplot2)

library(RColorBrewer)

 

# Pedro Sánchez

my.palette <- brewer.pal("Greens", n = 7)

plot_ide_1 <- ggplot(cis)+ geom_bar(aes(x=Ideologia_ps_cod2, y=..count../length(cis$Ideologia_ps_cod),fill = ..count..), col = "white") + labs(x=" ", y= "Frecuencia") + ggtitle("Clasificación ideológica de Pedro Sánchez") + scale_fill_gradientn(colours = my.palette, name = "Recuento") + theme(plot.title = element_text(face = "italic", hjust = 0))+ theme(panel.border = element_blank(),  panel.background = element_blank(),  text=element_text(family="Times", size = 11))

 

# Pablo Casado

plot_ide_2 <- ggplot(cis)+ geom_bar(aes(x=Ideologia_pc_cod2, y=..count../length(cis$Ideologia_pc_cod),fill = ..count..), col = "white") + labs(x=" ", y= "Frecuencia") + ggtitle("Clasificación ideológica de Pablo Casado") + scale_fill_gradientn(colours = my.palette, name = "Recuento") + theme(plot.title = element_text(face = "italic", hjust = 0))+ theme(panel.border = element_blank(),  panel.background = element_blank(),  text=element_text(family="Times", size = 11))

 

# Pablo Iglesias

plot_ide_3 <- ggplot(cis)+ geom_bar(aes(x=Ideologia_pi_cod2, y=..count../length(cis$Ideologia_pi_cod),fill = ..count..), col = "white") + labs(x=" ", y= "Frecuencia") + ggtitle("Clasificación ideológica de Pablo Iglesias") + scale_fill_gradientn(colours = my.palette, name = "Recuento") + theme(plot.title = element_text(face = "italic", hjust = 0))+ theme(panel.border = element_blank(),  panel.background = element_blank(),  text=element_text(family="Times", size = 11))

 

# Santiago Abascal

plot_ide_4 <- ggplot(cis)+ geom_bar(aes(x=Ideologia_sa_cod2, y=..count../length(cis$Ideologia_sa_cod),fill = ..count..), col = "white") + labs(x=" ", y= "Frecuencia") + ggtitle("Clasificación ideológica de Santiago Abascal") + scale_fill_gradientn(colours = my.palette, name = "Recuento") + theme(plot.title = element_text(face = "italic", hjust = 0))+ theme(panel.border = element_blank(),  panel.background = element_blank(),  text=element_text(family="Times", size = 11))

grid.arrange(plot_ide_1, plot_ide_2, plot_ide_3, plot_ide_4, ncol = 2)

 

# Inés Arrimadas

ggplot(cis)+ geom_bar(aes(x=Ideologia_ia_cod2, y=..count../length(cis$Ideologia_ia_cod),fill = ..count..), col = "white") + labs(x=" ", y= "Frecuencia") + ggtitle("Clasificación ideológica de Inés Arrimadas") + scale_fill_gradientn(colours = my.palette, name = "Recuento") + theme(plot.title = element_text(face = "italic", hjust = 0))+ theme(panel.border = element_blank(),  panel.background = element_blank(),  text=element_text(family="Times", size = 11))

 

-        Tau de Goodman and Kruskal

library(GoodmanKruskal)

GKcis <- GKtauDataframe(cis2)

GKcis2 <- matrix(0, nrow = nrow(GKcis), ncol = ncol(GKcis))

for(i in 1: nrow(GKcis))

{

  GKcis2[i,]=GKcis[i,]

}

colnames(GKcis2) = colnames(GKcis)

rownames(GKcis2) = rownames(GKcis)

 

GKcis2 <- as.data.frame(GKcis2)

colores <- function(x){

  cell_spec(x, background = ifelse(x>=0.1 & x<0.2, "tomato", ifelse(x>=0.2 & x <0.5, "#f4d35e", ifelse(x >= 0.5 & x<1, "lightgreen","white"))))

}

GKcis3 <- as.data.frame(GKcis2)

GKcis3 <- mutate_all(GKcis2,funs(colores(.)))

rownames(GKcis3) <- c("Sexo", "Comunidad Autónoma", "Edad", "Nacionalidad", "Valoración Situación económica", "Nivel de estudios", "Religión", "Estado civil", "Situación laboral", "Clase social", "Confianza en el presidente", "Confianza en la oposición", "Preferencia de presidente", "Intención de voto", "Intención de voto alternativo", "Simpatía partidista", "Ideología", "Clasificación ideológica PS", "Clasificación ideológica PC", "Clasificación ideológica PI", "Clasificación ideológica SA", "Clasificación ideológica IA", "Valoración PS", "Valoración PC", "Valoración PI", "Valoración SA", "Valoración IA", "Participación electoral 2019", "Recuerdo de voto 2019", "Cercanía partidista")

colnames(GKcis3) <- c("Sexo", "Comunidad Autónoma", "Edad", "Nacionalidad", "Valoración Situación económica", "Nivel de estudios", "Religión", "Estado civil", "Situación laboral", "Clase social", "Confianza en el presidente", "Confianza en la oposición", "Preferencia de presidente", "Intención de voto", "Intención de voto alternativo", "Simpatía partidista", "Ideología", "Clasificación ideológica PS", "Clasificación ideológica PC", "Clasificación ideológica PI", "Clasificación ideológica SA", "Clasificación ideológica IA", "Valoración PS", "Valoración PC", "Valoración PI", "Valoración SA", "Valoración IA", "Participación electoral 2019", "Recuerdo de voto 2019", "Cercanía partidista")

 

kable(GKcis3[,1:6], row.names = T,escape = FALSE, align=rep('c', 29), position = "center", font_size = 30, caption = "<leftr><em> Goodman and Kruskal Tau") %>%

  kable_classic(full_width = F, html_font = "Times New Roman")%>%

  column_spec(1, bold = T)

kable(GKcis3[,7:12], row.names = T,escape = FALSE, align=rep('c', 29), position = "center", font_size = 30) %>%

  kable_classic(full_width = F, html_font = "Times New Roman")%>%

  column_spec(1, bold = T)

kable(GKcis3[13:18], escape = FALSE, align=rep('c', 29), position = "center") %>%

  kable_classic(full_width = F, html_font = "Times New Roman")%>%

  column_spec(1, bold = T)

kable(GKcis3[19:24], escape = FALSE, align=rep('c', 29), position = "center") %>%

  kable_classic(full_width = F, html_font = "Times New Roman")%>%

  column_spec(1, bold = T)

kable(GKcis3[24:30], escape = FALSE, align=rep('c', 29), position = "center") %>%

  kable_classic(full_width = F, html_font = "Times New Roman")%>%

  column_spec(1, bold = T)

 

-        Intervalos de Bootstrap

# Tau entre 0.1 y 0.2

VI1 = which(GKcis2 >= 0.1 & GKcis2 < 0.2, arr.ind=TRUE)

dim(VI1)

library(bootstrap)

IC_VI1 <- c()

for(i in 1:nrow(VI1))

{

  var1 = VI1[i,1]

  var2 = VI1[i,2]

  xdata <- as.matrix(cis2[,c(var1,var2)])

  theta <- function(x, xdata){GKtau(xdata[x,1],xdata[x,2], includeNA = "ifany")$tauxy}

  n <- 3817

  results <- boott(1:n,theta, xdata)

  IC_VI1 <- c(IC_VI1,round(results$confpoints[c(3,9)], 3))

}

IC_VI1_2 <- matrix(IC_VI1, ncol = 2, nrow = dim(VI1)[1], byrow = T)

Int_VI1_2 <- c()

for(i in 1:nrow(IC_VI1_2))

{

  Int_VI1_2[i] <- paste0("( ", IC_VI1_2[i,1], " ; ", IC_VI1_2[i,2], " )")

}

fila <- c()

col <- c()

valor <- c()

for(i in 1:nrow(VI1))

{

  fila[i] <-  c(rownames(GKcis2)[VI1[i,"row"]])

  col[i] <- c(rownames(GKcis2)[VI1[i,"col"]])

  valor <- c(valor, GKcis2[fila[i],col[i]])

}

M_INT1 <- matrix(c(fila,col,valor), nrow = dim(VI1)[1], ncol = 3)

M_INT1 <- cbind(M_INT1, Int_VI1_2)

M_INT1 <- as.data.frame(M_INT1)

kable(M_INT1, escape = FALSE, align="llcc", col.names = c("Variable 1", "Variable 2", "K-tau", "Intervalo Bootstap"), position = "center") %>%

 kable_classic(full_width = F, html_font = "Times New Roman")

 

# Tau entre 0.2 y 0.5

VI2 = which(GKcis2 >= 0.2 & GKcis2 < 0.5, arr.ind=TRUE)

dim(VI2)

IC_VI2 <- c()

for(i in 1:nrow(VI2))

{

  var1 = VI2[i,1]

  var2 = VI2[i,2]

  xdata <- as.matrix(cis2[,c(var1,var2)])

  theta <- function(x, xdata){GKtau(xdata[x,1],xdata[x,2], includeNA = "ifany")$tauxy}

  n <- 3817

  results <- boott(1:n,theta, xdata)

  IC_VI2 <- c(IC_VI2,round(results$confpoints[c(3,9)],3))

}

IC_VI2_2 <- matrix(IC_VI2, ncol = 2, nrow = dim(VI2)[1], byrow = T)

Int_VI2_2 <- c()

for(i in 1:nrow(IC_VI2_2))

{

  Int_VI2_2[i] <- paste0("( ", IC_VI2_2[i,1], " ; ", IC_VI2_2[i,2], " )")

}

fila <- c()

col <- c()

valor <- c()

for(i in 1:nrow(VI2))

{

  fila[i] <-  c(rownames(GKcis2)[VI2[i,"row"]])

  col[i] <- c(rownames(GKcis2)[VI2[i,"col"]])

  valor <- c(valor, GKcis2[fila[i],col[i]])

}

M_INT2 <- matrix(c(fila,col, valor), nrow = dim(VI2)[1] , ncol = 3)

M_INT2 <- cbind(M_INT2,  Int_VI2_2)

M_INT2 <- as.data.frame(M_INT2)

 

kable(M_INT2, escape = FALSE, align="llcc", col.names = c("Variable 1", "Variable 2", "K-tau", "Intervalo Bootstap")) %>%

  kable_classic(full_width = F, html_font = "Times New Roman")

# Tau mayor de 0.5

VI3 = which(GKcis2 >= 0.5 & GKcis2 < 1, arr.ind=TRUE)

dim(VI3)

IC_VI3 <- c()

set.seed(1, sample.kind = "Rounding")

for(i in 1:nrow(VI3))

{

  var1 = VI3[i,1]

  var2 = VI3[i,2]

  xdata <- as.matrix(cis2[,c(var1,var2)])

  theta <- function(x, xdata){GKtau(xdata[x,1],xdata[x,2], includeNA = "ifany")$tauxy}

  n <- 3817

  results <- boott(1:n,theta, xdata)

  IC_VI3 <- c(IC_VI3,round(results$confpoints[c(3,9)],3))

}

IC_VI3_2 <- matrix(IC_VI3, ncol = 2, nrow = dim(VI3)[1], byrow = T)

Int_VI3_2 <- c()

for(i in 1:nrow(IC_VI3_2))

{

  Int_VI3_2[i] <- paste0("( ", IC_VI3_2[i,1], " ; ", IC_VI3_2[i,2], " )")

}

fila <- c()

col <- c()

valor <- c()

for(i in 1:nrow(VI3))

{

  fila[i] <-  c(rownames(GKcis2)[VI3[i,"row"]])

  col[i] <- c(rownames(GKcis2)[VI3[i,"col"]])

  valor <- c(valor, GKcis2[fila[i],col[i]])

}

M_INT3 <- matrix(c(fila,col, valor), nrow = dim(VI3)[1], ncol = 3)

M_INT3 <- cbind(M_INT3, Int_VI3_2)

M_INT3 <- as.data.frame(M_INT3)

colnames(M_INT3) <- NULL

kable(M_INT3, escape = FALSE, align="llcc", col.names = c("Variable 1", "Variable 2", "K-tau", "Intervalo Bootstap")) %>%

  kable_classic(full_width = F, html_font = "Times New Roman")

 

-        Partición de la muestra

# Ordenación de variables según "NS/NC"

sort(colSums(cis2 == "99"))

library(caret)

#Personas han respondido a Intención de Voto (IV):

IV <- cis2[cis2[,"Voto_cod"]!="99",]

dim(IV)[1]

#Personas que no han respondido a Intención de Voto (IV):

N_IV <- cis2[cis2[,"Voto_cod"]=="99",]

dim(N_IV)[1]

#Muestras de entrenamiento y test de las personas que han respondido IV:

set.seed(0, sample.kind = "Rounding")

train_IV = sample(1:dim(IV)[1], dim(IV)[1]*(2/3))

test_IV = -train_IV

train = IV[train_IV,]

test = IV[test_IV,]

dim(train)[1]

dim(test)[1]

dim(IV)[1]

dim(train)[1]+dim(test)[1]

 

#Datos de partida (nuevo conjunto de datos) -> Personas que no han respondido IV y train IV

conjunto = rbind(train, N_IV)

dim(conjunto)[1]

library(dropR)

library(tidyverse)

 

-        Imputación de la situación laboral

# M = 1

train2 <- conjunto[conjunto[,"Situ"]!="99",]

impu <- conjunto[conjunto[,"Situ"]=="99",]

dim(train2)[1]

dim(impu)[1]

M1 = cis2

table(train2$Situ)

train2[,"Situ"] <- droplevels(train2[,"Situ"])

table(train2$Situ)

 

ctrl <- trainControl(method = "cv", number = 5)

# RF train with CV to optimize number of variables

#library(doMC)

#registerDoMC(cores = 2)

set.seed(0, sample.kind = "Rounding")

rfFit <- train(Situ ~ .,

               method = "rf",

               data = train2,

               preProcess = c("center", "scale"),

               tuneGrid = expand.grid(mtry = c(2:10)),

               trControl = ctrl)

library(flextable)

rfFit

varImp(rfFit)

par(family = "serif")

plot(varImp(rfFit), top = 10, col = "#74A9CF", main = expression(italic("Importancia de variables Situación laboral")), family = "serif")

rfFit$finalModel

pred <- predict(rfFit, test)

impu_Situ <- predict(rfFit, impu)

table(pred)

test_Situ <- test$Situ[test$Situ!=99]

test_Situ <- droplevels(test_Situ)

confusionMatrix(pred[test$Situ!=99],test_Situ)

(CM1_Situ <- confusionMatrix(pred[test$Situ!=99],test_Situ)$table)

AC1_Situ <- as.vector(confusionMatrix(pred[test$Situ!=99],test_Situ)$overall[1])

NA_Situ <- as.numeric(rownames(test[test[,"Situ"]=='99',]))

pos = c()

for(i in 1:nrow(test))

{

  if(test[i,"Situ"]=="99")

  {

    pos=c(pos,i)

  }

}

NA_Situ_impu <- as.numeric(rownames(impu))

M1[NA_Situ,"Situ"] <- pred[pos]

M1[NA_Situ_impu,"Situ"] <- impu_Situ

M = 2

M2 = cis2

set.seed(1, sample.kind = "Rounding")

rfFit2 <- train(Situ ~ .,

                method = "rf",

                data = train2,

                preProcess = c("center", "scale"),

                tuneGrid = expand.grid(mtry = c(2:10)),

                trControl = ctrl)

rfFit2

varImp(rfFit2)

plot(varImp(rfFit2), top = 10, col = "#0570B0", main = "M2")

rfFit2$finalModel

pred2 <- predict(rfFit2, test)

impu_Situ2 <- predict(rfFit2, impu)

table(pred2)

confusionMatrix(pred2[test$Situ!=99],test_Situ)

CM2_Situ <- confusionMatrix(pred2[test$Situ!=99],test_Situ)$table

AC2_Situ <- as.vector(confusionMatrix(pred2[test$Situ!=99],test_Situ)$overall[1])

M2[NA_Situ,"Situ"] <- pred2[pos]

M2[NA_Situ_impu,"Situ"] <- impu_Situ2

M = 3

M3 = cis2

set.seed(2, sample.kind = "Rounding")

rfFit3 <- train(Situ ~ .,

                method = "rf",

                data = train2,

                preProcess = c("center", "scale"),

                tuneGrid = expand.grid(mtry = c(2:10)),

                trControl = ctrl)

rfFit3

varImp(rfFit3)

plot(varImp(rfFit3), top = 10, col = "#41AE76", main = "M3")

rfFit3$finalModel

pred3 <- predict(rfFit3, test)

impu_Situ3 <- predict(rfFit3, impu)

table(pred3)

confusionMatrix(pred3[test$Situ!=99],test_Situ)

CM3_Situ <- confusionMatrix(pred3[test$Situ!=99],test_Situ)$table

AC3_Situ <- as.vector(confusionMatrix(pred3[test$Situ!=99],test_Situ)$overall[1])

M3[NA_Situ,"Situ"] <- pred3[pos]

M3[NA_Situ_impu,"Situ"] <- impu_Situ3

CMT_Situ <- (CM1_Situ)

for(i in 1:nrow(CMT_Situ))

{

  for(j in 1:ncol(CMT_Situ))

  {

    if((CM1_Situ[i,j]+CM2_Situ[i,j]+CM3_Situ[i,j])%%3 != 0)

    {

      CMT_Situ[i,j] = as.character(round((CM1_Situ[i,j]+CM2_Situ[i,j]+CM3_Situ[i,j])/3,2))

    }else{

      CMT_Situ[i,j] = as.character(as.integer((CM1_Situ[i,j]+CM2_Situ[i,j]+CM3_Situ[i,j])/3))

    }

  }

}

CMT_Situ = cbind(c(1:6), CMT_Situ)

CM1_Situ = cbind(c(1:6), CM1_Situ)

CM2_Situ = cbind(c(1:6), CM2_Situ)

CM3_Situ = cbind(c(1:6), CM3_Situ)

kable(CMT_Situ, position = "center", booktabs = TRUE, align = "cccccc", caption = "<left><em> Matriz de confusión Situación laboral </em></center>", escape = FALSE, col.names = c("Predicción", "1","2","3","4","5","6"), position = "center")%>%

  kableExtra::footnote(symbol = c("Al tomar la media de los elementos de las matrices de confusión,  

            es posible que no se obtenga un número entero"), threeparttable=T)%>%

  kable_classic(full_width = F, html_font = "Times New Roman")%>%

  column_spec(1:7, width = "1.2cm")%>%

  add_header_above(c(" " = 1, "Referencia" = 1, " " = 3, " " = 2))

kable(CM1_Situ, position = "center", booktabs = TRUE, align = "cccccc", caption = "<left><em> Matriz de confusión Situación laboral 1ª imputación </em></center>", escape = FALSE, col.names = c("Predicción", "1","2","3","4","5","6"), position = "center")%>%

  kable_classic(full_width = F, html_font = "Times New Roman")%>%

  column_spec(1:7, width = "1.2cm")%>%

  add_header_above(c(" " = 1, "Referencia" = 1, " " = 3, " " = 2))

kable(CM2_Situ, position = "center", booktabs = TRUE, align = "cccccc", caption = "<left><em> Matriz de confusión Situación laboral 2ª imputación </em></center>", escape = FALSE, col.names = c("Predicción", "1","2","3","4","5","6"), position = "center")%>%

  kable_classic(full_width = F, html_font = "Times New Roman")%>%

  column_spec(1:7, width = "1.2cm")%>%

  add_header_above(c(" " = 1, "Referencia" = 1, " " = 3, " " = 2))

kable(CM3_Situ, position = "center", booktabs = TRUE, align = "cccccc", caption = "<left><em> Matriz de confusión Situación laboral 3ª imputación </em></center>", escape = FALSE, col.names = c("Predicción", "1","2","3","4","5","6"), position = "center")%>%

  kable_classic(full_width = F, html_font = "Times New Roman")%>%

  column_spec(1:7, width = "1.2cm")%>%

  add_header_above(c(" " = 1, "Referencia" = 1, " " = 3, " " = 2))

ACT_Situ <- c(AC1_Situ,AC2_Situ,AC3_Situ)

ACM_Situ <- mean(c(ACT_Situ))

ACSD_Situ <- sqrt(var(ACT_Situ)/3)

 

-        Imputación del Nivel de Estudios

# M = 1

train2_Estudios <- conjunto[conjunto[,"Estudios"]!="99",]

impu_Estudios <- conjunto[conjunto[,"Estudios"]=="99",]

dim(train2_Estudios)[1]

dim(impu_Estudios)[1]

table(train2_Estudios$Estudios)

train2_Estudios[,"Estudios"] <- droplevels(train2_Estudios[,"Estudios"])

table(train2_Estudios$Estudios)

ctrl <- trainControl(method = "cv", number = 5)

# RF train with CV to optimize number of variables

#library(doMC)

#registerDoMC(cores = 2)

set.seed(0, sample.kind = "Rounding")

rfFit_Estudios <- train(Estudios ~ .,

                        method = "rf",

                        data = train2_Estudios,

                        preProcess = c("center", "scale"),

                        tuneGrid = expand.grid(mtry = c(2:10)),

                        trControl = ctrl)

rfFit_Estudios

varImp(rfFit_Estudios)

plot(varImp(rfFit_Estudios), top = 10, col = "#74A9CF", main = expression(italic("Importancia de variables Situación laboral")), adj = 0)

rfFit_Estudios$finalModel

pred_Estudios <- predict(rfFit_Estudios, test)

impu_Estudios1 <- predict(rfFit_Estudios, impu_Estudios)

table(pred_Estudios)

test_Estudios <- test$Estudios[test$Estudios!=99]

test_Estudios <- droplevels(test_Estudios)

confusionMatrix(pred_Estudios[test$Estudios!=99],test_Estudios)

CM1_Estudios <- confusionMatrix(pred_Estudios[test$Estudios!=99],test_Estudios)$table

AC1_Estudios <- as.vector(confusionMatrix(pred_Estudios[test$Estudios!=99],test_Estudios)$overall[1])

NA_Estudios <- as.numeric(rownames(test[test[,"Estudios"]=='99',]))

pos = c()

for(i in 1:nrow(test))

{

  if(test[i,"Estudios"]=="99")

  {

    pos=c(pos,i)

  }

}

NA_Estudios_impu <- as.numeric(rownames(impu_Estudios))

M1[NA_Estudios,"Estudios"] <- pred_Estudios[pos]

M1[NA_Estudios_impu,"Estudios"] <- impu_Estudios1

M = 2

set.seed(1, sample.kind = "Rounding")

rfFit2_Estudios <- train(Estudios ~ .,

                         method = "rf",

                         data = train2_Estudios,

                         preProcess = c("center", "scale"),

                         tuneGrid = expand.grid(mtry = c(2:10)),

                         trControl = ctrl)

rfFit2_Estudios

varImp(rfFit2_Estudios)

plot(varImp(rfFit2_Estudios), top = 10, col = "#0570B0", main = "M2")

rfFit2_Estudios$finalModel

pred2_Estudios <- predict(rfFit2_Estudios, test)

impu_Estudios2 <- predict(rfFit2_Estudios, impu_Estudios)

table(pred2_Estudios)

confusionMatrix(pred2_Estudios[test$Estudios!=99],test_Estudios)

CM2_Estudios <- confusionMatrix(pred2_Estudios[test$Estudios!=99],test_Estudios)$table

AC2_Estudios <- as.vector(confusionMatrix(pred2_Estudios[test$Estudios!=99],test_Estudios)$overall[1])

M2[NA_Estudios,"Estudios"] <- pred2_Estudios[pos]

M2[NA_Estudios_impu,"Estudios"] <- impu_Estudios2

M = 3

set.seed(2, sample.kind = "Rounding")

rfFit3_Estudios <- train(Estudios ~ .,

                         method = "rf",

                         data = train2_Estudios,

                         preProcess = c("center", "scale"),

                         tuneGrid = expand.grid(mtry = c(2:10)),

                         trControl = ctrl)

rfFit3_Estudios

varImp(rfFit3_Estudios)

plot(varImp(rfFit3_Estudios), top = 10, col = "#41AE76", main = "M3")

pred3_Estudios <- predict(rfFit3_Estudios, test)

impu_Estudios3 <- predict(rfFit3_Estudios, impu_Estudios)

table(pred3_Estudios)

confusionMatrix(pred3_Estudios[test$Estudios!=99],test_Estudios)

CM3_Estudios <- confusionMatrix(pred3_Estudios[test$Estudios!=99],test_Estudios)$table

AC3_Estudios <- as.vector(confusionMatrix(pred3_Estudios[test$Estudios!=99],test_Estudios)$overall[1])

M3[NA_Estudios,"Estudios"] <- pred3_Estudios[pos]

M3[NA_Estudios_impu,"Estudios"] <- impu_Estudios3

CMT_Estudios <- (CM1_Estudios)

for(i in 1:nrow(CMT_Estudios))

{

  for(j in 1:ncol(CMT_Estudios))

  {

    if((CM1_Estudios[i,j]+CM2_Estudios[i,j]+CM3_Estudios[i,j])%%3 != 0)

    {

      CMT_Estudios[i,j] = as.character(round((CM1_Estudios[i,j]+CM2_Estudios[i,j]+CM3_Estudios[i,j])/3,2))

    }else{

      CMT_Estudios[i,j] = as.character(as.integer((CM1_Estudios[i,j]+CM2_Estudios[i,j]+CM3_Estudios[i,j])/3))

    }

  }

}

CMT_Estudios = cbind(c(1:4), CMT_Estudios)

kable(CMT_Estudios, position = "center", booktabs = TRUE, align = "cccccc", caption = "<left><em> Matriz de confusión Nivel de Estudios </em></center>", escape = FALSE, col.names = c("Prediction", "1","2","3","4"), position = "center", row_label_position = "c", font_size = 15)%>%

  kableExtra::footnote(symbol = c("Al tomar la media de los elementos de las matrices de confusión,  

            es posible que no se obtenga un número entero"), threeparttable=T)%>%

  kable_classic(full_width = F, html_font = "Times New Roman")%>%

  add_header_above(c(" " = 1, "Reference" = 1, " " = 3))%>%

  column_spec(1:5, width = "1.2cm")

ACT_Estudios <- c(AC1_Estudios,AC2_Estudios,AC3_Estudios)

ACM_Estudios <- mean(c(ACT_Estudios))

ACSD_Estudios <- sqrt(var(ACT_Estudios)/3)

 

-        Imputación del Estado Civil

 

# M = 1

train2_civil_cod <- conjunto[conjunto[,"civil_cod"]!="99",]

impu_civil_cod <- conjunto[conjunto[,"civil_cod"]=="99",]

dim(train2_civil_cod)[1]

dim(impu_civil_cod)[1]

table(train2_civil_cod$civil_cod)

train2_civil_cod[,"civil_cod"] <- droplevels(train2_civil_cod[,"civil_cod"])

table(train2_civil_cod$civil_cod)

ctrl <- trainControl(method = "cv", number = 5)

# RF train with CV to optimize number of variables

#library(doMC)

#registerDoMC(cores = 2)

set.seed(0, sample.kind = "Rounding")

rfFit_civil_cod <- train(civil_cod ~ .,

                         method = "rf",

                         data = train2_civil_cod,

                         preProcess = c("center", "scale"),

                         tuneGrid = expand.grid(mtry = c(2:10)),

                         trControl = ctrl)

rfFit_civil_cod

varImp(rfFit_civil_cod)

plot(varImp(rfFit_civil_cod), top = 10, col = "#74A9CF", main = "M1")

rfFit_civil_cod$finalModel

pred_civil_cod <- predict(rfFit_civil_cod, test)

impu_civil_cod1 <- predict(rfFit_civil_cod, impu_civil_cod)

table(pred_civil_cod)

test_civil_cod <- test$civil_cod[test$civil_cod!=99]

test_civil_cod <- droplevels(test_civil_cod)

confusionMatrix(pred_civil_cod[test$civil_cod!=99],test_civil_cod)

CM1_civil_cod <- confusionMatrix(pred_civil_cod[test$civil_cod!=99],test_civil_cod)$table

AC1_civil_cod <- as.vector(confusionMatrix(pred_civil_cod[test$civil_cod!=99],test_civil_cod)$overall[1])

NA_civil_cod <- as.numeric(rownames(test[test[,"civil_cod"]=='99',]))

pos = c()

for(i in 1:nrow(test))

{

  if(test[i,"civil_cod"]=="99")

  {

    pos=c(pos,i)

  }

}

NA_civil_cod_impu <- as.numeric(rownames(impu_civil_cod))

M1[NA_civil_cod,"civil_cod"] <- pred_civil_cod[pos]

M1[NA_civil_cod_impu,"civil_cod"] <- impu_civil_cod1

M = 2

set.seed(1, sample.kind = "Rounding")

rfFit2_civil_cod <- train(civil_cod ~ .,

                          method = "rf",

                          data = train2_civil_cod,

                          preProcess = c("center", "scale"),

                          tuneGrid = expand.grid(mtry = c(2:10)),

                          trControl = ctrl)

rfFit2_civil_cod

varImp(rfFit2_civil_cod)

plot(varImp(rfFit2_civil_cod), top = 10, col = "#0570B0", main = "M2")

rfFit2_civil_cod$finalModel

pred2_civil_cod <- predict(rfFit2_civil_cod, test)

impu_civil_cod2 <- predict(rfFit2_civil_cod, impu_civil_cod)

table(pred2_civil_cod)

confusionMatrix(pred2_civil_cod[test$civil_cod!=99],test_civil_cod)

CM2_civil_cod <- confusionMatrix(pred2_civil_cod[test$civil_cod!=99],test_civil_cod)$table

AC2_civil_cod <- as.vector(confusionMatrix(pred2_civil_cod[test$civil_cod!=99],test_civil_cod)$overall[1])

M2[NA_civil_cod,"civil_cod"] <- pred2_civil_cod[pos]

M2[NA_civil_cod_impu,"civil_cod"] <- impu_civil_cod2

M = 3

set.seed(2, sample.kind = "Rounding")

rfFit3_civil_cod <- train(civil_cod ~ .,

                          method = "rf",

                          data = train2_civil_cod,

                          preProcess = c("center", "scale"),

                          tuneGrid = expand.grid(mtry = c(2:10)),

                          trControl = ctrl)

rfFit3_civil_cod

varImp(rfFit3_civil_cod)

plot(varImp(rfFit3_civil_cod), top = 10, col = "#41AE76", main = "M3")

rfFit3_civil_cod$finalModel

pred3_civil_cod <- predict(rfFit3_civil_cod, test)

impu_civil_cod3 <- predict(rfFit3_civil_cod, impu_civil_cod)

table(pred3_civil_cod)

confusionMatrix(pred3_civil_cod[test$civil_cod!=99],test_civil_cod)

CM3_civil_cod <- confusionMatrix(pred3_civil_cod[test$civil_cod!=99],test_civil_cod)$table

AC3_civil_cod <- as.vector(confusionMatrix(pred3_civil_cod[test$civil_cod!=99],test_civil_cod)$overall[1])

M3[NA_civil_cod,"civil_cod"] <- pred3_civil_cod[pos]

M3[NA_civil_cod_impu,"civil_cod"] <- impu_civil_cod3

CMT_civil_cod <- (CM1_civil_cod)

for(i in 1:nrow(CMT_civil_cod))

{

  for(j in 1:ncol(CMT_civil_cod))

  {

    if((CM1_civil_cod[i,j]+CM2_civil_cod[i,j]+CM3_civil_cod[i,j])%%3 != 0)

    {

      CMT_civil_cod[i,j] = as.character(round((CM1_civil_cod[i,j]+CM2_civil_cod[i,j]+CM3_civil_cod[i,j])/3,2))

    }else{

      CMT_civil_cod[i,j] = as.character(as.integer((CM1_civil_cod[i,j]+CM2_civil_cod[i,j]+CM3_civil_cod[i,j])/3))

    }

  }

}

CMT_civil_cod = cbind(c(1:3), CMT_civil_cod)

kable(CMT_civil_cod, position = "center", booktabs = TRUE, align = "cccccc", caption = "<left><em> Matriz de confusión Estado Civil </em></center>", escape = FALSE, col.names = c("Prediction", "1","2","3"), position = "center", row_label_position = "c", font_size = 15)%>%

  kableExtra::footnote(symbol = c("Al tomar la media de los elementos de las matrices de confusión,  

            es posible que no se obtenga un número entero"), threeparttable=T)%>%

  kable_classic(full_width = F, html_font = "Times New Roman")%>%

  add_header_above(c(" " = 1, "Reference" = 1, " " = 2))%>%

  column_spec(1:4, width = "1.2cm")

ACT_civil_cod <- c(AC1_civil_cod,AC2_civil_cod,AC3_civil_cod)

ACM_civil_cod <- mean(c(ACT_civil_cod))

ACSD_civil_cod <- sqrt(var(ACT_civil_cod)/3)

 

-        Imputación variable participación electoral

# M = 1

train2_Participacion_cod <- conjunto[conjunto[,"Participacion_cod"]!="99",]

impu_Participacion_cod <- conjunto[conjunto[,"Participacion_cod"]=="99",]

dim(train2_Participacion_cod)[1]

dim(impu_Participacion_cod)[1]

table(train2_Participacion_cod$Participacion_cod)

train2_Participacion_cod[,"Participacion_cod"] <- droplevels(train2_Participacion_cod[,"Participacion_cod"])

table(train2_Participacion_cod$Participacion_cod)

ctrl <- trainControl(method = "cv", number = 5)

# RF train with CV to optimize number of variables

#library(doMC)

#registerDoMC(cores = 2)

set.seed(0, sample.kind = "Rounding")

rfFit_Participacion_cod <- train(Participacion_cod ~ .,

                                 method = "rf",

                                 data = train2_Participacion_cod,

                                 preProcess = c("center", "scale"),

                                 tuneGrid = expand.grid(mtry = c(2:10)),

                                 trControl = ctrl)

rfFit_Participacion_cod

varImp(rfFit_Participacion_cod)

plot(varImp(rfFit_Participacion_cod), top = 10, col = "#74A9CF", main = "M1")

rfFit_Participacion_cod$finalModel

pred_Participacion_cod <- predict(rfFit_Participacion_cod, test)

impu_Participacion_cod1 <- predict(rfFit_Participacion_cod, impu_Participacion_cod)

table(pred_Participacion_cod)

test_Participacion_cod <- test$Participacion_cod[test$Participacion_cod!=99]

test_Participacion_cod <- droplevels(test_Participacion_cod)

confusionMatrix(pred_Participacion_cod[test$Participacion_cod!=99],test_Participacion_cod)

CM1_Participacion_cod <- confusionMatrix(pred_Participacion_cod[test$Participacion_cod!=99],test_Participacion_cod)$table

AC1_Participacion_cod <- as.vector(confusionMatrix(pred_Participacion_cod[test$Participacion_cod!=99],test_Participacion_cod)$overall[1])

NA_Participacion_cod <- as.numeric(rownames(test[test[,"Participacion_cod"]=='99',]))

pos = c()

for(i in 1:nrow(test))

{

  if(test[i,"Participacion_cod"]=="99")

  {

    pos=c(pos,i)

  }

}

NA_Participacion_cod_impu <- as.numeric(rownames(impu_Participacion_cod))

M1[NA_Participacion_cod,"Participacion_cod"] <- pred_Participacion_cod[pos]

M1[NA_Participacion_cod_impu,"Participacion_cod"] <- impu_Participacion_cod1

M = 2

set.seed(1, sample.kind = "Rounding")

rfFit2_Participacion_cod <- train(Participacion_cod ~ .,

                                  method = "rf",

                                  data = train2_Participacion_cod,

                                  preProcess = c("center", "scale"),

                                  tuneGrid = expand.grid(mtry = c(2:10)),

                                  trControl = ctrl)

rfFit2_Participacion_cod

varImp(rfFit2_Participacion_cod)

plot(varImp(rfFit2_Participacion_cod), top = 10, col = "#0570B0", main = "M2")

rfFit2_Participacion_cod$finalModel

pred2_Participacion_cod <- predict(rfFit2_Participacion_cod, test)

impu_Participacion_cod2 <- predict(rfFit2_Participacion_cod, impu_Participacion_cod)

table(pred2_Participacion_cod)

confusionMatrix(pred2_Participacion_cod[test$Participacion_cod!=99],test_Participacion_cod)

CM2_Participacion_cod <- confusionMatrix(pred2_Participacion_cod[test$Participacion_cod!=99],test_Participacion_cod)$table

AC2_Participacion_cod <- as.vector(confusionMatrix(pred2_Participacion_cod[test$Participacion_cod!=99],test_Participacion_cod)$overall[1])

M2[NA_Participacion_cod,"Participacion_cod"] <- pred2_Participacion_cod[pos]

M2[NA_Participacion_cod_impu,"Participacion_cod"] <- impu_Participacion_cod2

M = 3

set.seed(2, sample.kind = "Rounding")

rfFit3_Participacion_cod <- train(Participacion_cod ~ .,

                                  method = "rf",

                                  data = train2_Participacion_cod,

                                  preProcess = c("center", "scale"),

                                  tuneGrid = expand.grid(mtry = c(2:10)),

                                  trControl = ctrl)

rfFit3_Participacion_cod

varImp(rfFit3_Participacion_cod)

plot(varImp(rfFit3_Participacion_cod), top = 10, col = "#41AE76", main = "M3")

rfFit3_Participacion_cod$finalModel

pred3_Participacion_cod <- predict(rfFit3_Participacion_cod, test)

impu_Participacion_cod3 <- predict(rfFit3_Participacion_cod, impu_Participacion_cod)

table(pred3_Participacion_cod)

confusionMatrix(pred3_Participacion_cod[test$Participacion_cod!=99],test_Participacion_cod)

CM3_Participacion_cod <- confusionMatrix(pred3_Participacion_cod[test$Participacion_cod!=99],test_Participacion_cod)$table

AC3_Participacion_cod <- as.vector(confusionMatrix(pred3_Participacion_cod[test$Participacion_cod!=99],test_Participacion_cod)$overall[1])

 

M3[NA_Participacion_cod,"Participacion_cod"] <- pred3_Participacion_cod[pos]

M3[NA_Participacion_cod_impu,"Participacion_cod"] <- impu_Participacion_cod3

# Matriz Confusión

CMT_Participacion_cod <- (CM1_Participacion_cod)

for(i in 1:nrow(CMT_Participacion_cod))

{

  for(j in 1:ncol(CMT_Participacion_cod))

  {

    if((CM1_Participacion_cod[i,j]+CM2_Participacion_cod[i,j]+CM3_Participacion_cod[i,j])%%3 != 0)

    {

      CMT_Participacion_cod[i,j] = as.character(round((CM1_Participacion_cod[i,j]+CM2_Participacion_cod[i,j]+CM3_Participacion_cod[i,j])/3,2))

    }else{

      CMT_Participacion_cod[i,j] = as.character(as.integer((CM1_Participacion_cod[i,j]+CM2_Participacion_cod[i,j]+CM3_Participacion_cod[i,j])/3))

    }

  }

}

CMT_Participacion_cod = cbind(c(1:3), CMT_Participacion_cod)

kable(CMT_Participacion_cod, position = "center", booktabs = TRUE, align = "cccccc", caption = "<left><em> Matriz de confusión Participación electoral </em></center>", escape = FALSE, col.names = c("Prediction", "1","2","3"), position = "center", row_label_position = "c", font_size = 15, latex_options="scale_down")%>%

  kableExtra::footnote(symbol = c("Al tomar la media de los elementos de las matrices de confusión,  

            es posible que no se obtenga un número entero"), threeparttable=T)%>%

  kable_classic(full_width = F,  html_font = "Times New Roman")%>%

  add_header_above(c(" " = 1, "Reference" = 1, " " = 2))%>%

  column_spec(1:4, width = "1.2cm")

ACT_Participacion_cod <- c(AC1_Participacion_cod,AC2_Participacion_cod,AC3_Participacion_cod)

ACM_Participacion_cod <- mean(c(ACT_Participacion_cod))

ACSD_Participacion_cod <- sqrt(var(ACT_Participacion_cod)/3)

 

-        Imputación de la Religión

# M = 1

train2_Religion_cod <- conjunto[conjunto[,"Religion_cod"]!="99",]

impu_Religion_cod <- conjunto[conjunto[,"Religion_cod"]=="99",]

dim(train2_Religion_cod)[1]

dim(impu_Religion_cod)[1]

table(train2_Religion_cod$Religion_cod)

train2_Religion_cod[,"Religion_cod"] <- droplevels(train2_Religion_cod[,"Religion_cod"])

table(train2_Religion_cod$Religion_cod)

ctrl <- trainControl(method = "cv", number = 5)

# RF train with CV to optimize number of variables

#library(doMC)

#registerDoMC(cores = 2)

set.seed(0, sample.kind = "Rounding")

rfFit_Religion_cod <- train(Religion_cod ~ .,

                            method = "rf",

                            data = train2_Religion_cod,

                            preProcess = c("center", "scale"),

                            tuneGrid = expand.grid(mtry = c(2:10)),

                            trControl = ctrl)

rfFit_Religion_cod

varImp(rfFit_Religion_cod)

plot(varImp(rfFit_Religion_cod), top = 10, col = "#74A9CF", main = "M1")

rfFit_Religion_cod$finalModel

pred_Religion_cod <- predict(rfFit_Religion_cod, test)

impu_Religion_cod1 <- predict(rfFit_Religion_cod, impu_Religion_cod)

table(pred_Religion_cod)

test_Religion_cod <- test$Religion_cod[test$Religion_cod!=99]

test_Religion_cod <- droplevels(test_Religion_cod)

confusionMatrix(pred_Religion_cod[test$Religion_cod!=99],test_Religion_cod)

CM1_Religion_cod <- confusionMatrix(pred_Religion_cod[test$Religion_cod!=99],test_Religion_cod)$table

AC1_Religion_cod <- as.vector(confusionMatrix(pred_Religion_cod[test$Religion_cod!=99],test_Religion_cod)$overall[1])

NA_Religion_cod <- as.numeric(rownames(test[test[,"Religion_cod"]=='99',]))

pos = c()

for(i in 1:nrow(test))

{

  if(test[i,"Religion_cod"]=="99")

  {

    pos=c(pos,i)

  }

}

NA_Religion_cod_impu <- as.numeric(rownames(impu_Religion_cod))

M1[NA_Religion_cod,"Religion_cod"] <- pred_Religion_cod[pos]

M1[NA_Religion_cod_impu,"Religion_cod"] <- impu_Religion_cod1

M = 2

set.seed(1, sample.kind = "Rounding")

rfFit2_Religion_cod <- train(Religion_cod ~ .,

                             method = "rf",

                             data = train2_Religion_cod,

                             preProcess = c("center", "scale"),

                             tuneGrid = expand.grid(mtry = c(2:10)),

                             trControl = ctrl)

rfFit2_Religion_cod

varImp(rfFit2_Religion_cod)

plot(varImp(rfFit2_Religion_cod), top = 10, col = "#0570B0", main = "M2")

rfFit2_Religion_cod$finalModel

pred2_Religion_cod <- predict(rfFit2_Religion_cod, test)

impu_Religion_cod2 <- predict(rfFit2_Religion_cod, impu_Religion_cod)

table(pred2_Religion_cod)

confusionMatrix(pred2_Religion_cod[test$Religion_cod!=99],test_Religion_cod)

CM2_Religion_cod <- confusionMatrix(pred2_Religion_cod[test$Religion_cod!=99],test_Religion_cod)$table

AC2_Religion_cod <- as.vector(confusionMatrix(pred2_Religion_cod[test$Religion_cod!=99],test_Religion_cod)$overall[1])

M2[NA_Religion_cod,"Religion_cod"] <- pred2_Religion_cod[pos]

M2[NA_Religion_cod_impu,"Religion_cod"] <- impu_Religion_cod2

M = 3

set.seed(2, sample.kind = "Rounding")

rfFit3_Religion_cod <- train(Religion_cod ~ .,

                             method = "rf",

                             data = train2_Religion_cod,

                             preProcess = c("center", "scale"),

                             tuneGrid = expand.grid(mtry = c(2:10)),

                             trControl = ctrl)

rfFit3_Religion_cod

varImp(rfFit3_Religion_cod)

plot(varImp(rfFit3_Religion_cod), top = 10, col = "#41AE76", main = "M3")

rfFit3_Religion_cod$finalModel

pred3_Religion_cod <- predict(rfFit3_Religion_cod, test)

impu_Religion_cod3 <- predict(rfFit3_Religion_cod, impu_Religion_cod)

table(pred3_Religion_cod)

confusionMatrix(pred3_Religion_cod[test$Religion_cod!=99],test_Religion_cod)

CM3_Religion_cod <- confusionMatrix(pred3_Religion_cod[test$Religion_cod!=99],test_Religion_cod)$table

AC3_Religion_cod <- as.vector(confusionMatrix(pred3_Religion_cod[test$Religion_cod!=99],test_Religion_cod)$overall[1])

M3[NA_Religion_cod,"Religion_cod"] <- pred3_Religion_cod[pos]

M3[NA_Religion_cod_impu,"Religion_cod"] <- impu_Religion_cod3

Matriz confusión

CMT_Religion_cod <- (CM1_Religion_cod)

for(i in 1:nrow(CMT_Religion_cod))

{

  for(j in 1:ncol(CMT_Religion_cod))

  {

    if((CM1_Religion_cod[i,j]+CM2_Religion_cod[i,j]+CM3_Religion_cod[i,j])%%3 != 0)

    {

      CMT_Religion_cod[i,j] = as.character(round((CM1_Religion_cod[i,j]+CM2_Religion_cod[i,j]+CM3_Religion_cod[i,j])/3,2))

    }else{

      CMT_Religion_cod[i,j] = as.character(as.integer((CM1_Religion_cod[i,j]+CM2_Religion_cod[i,j]+CM3_Religion_cod[i,j])/3))

    }

  }

}

CMT_Religion_cod = cbind(c(1:4), CMT_Religion_cod)

kable(CMT_Religion_cod, position = "center", booktabs = TRUE, align = "cccccc", caption = "<left><em> Matriz de confusión Religión </em></center>", escape = FALSE, col.names = c("Prediction", "1","2","3", "4"),  position = "center", row_label_position = "c", font_size = 15)%>%

  kableExtra::footnote(symbol = c("Al tomar la media de los elementos de las matrices de confusión,  

            es posible que no se obtenga un número entero"), threeparttable=T)%>%

  kable_classic(full_width = F,  html_font = "Times New Roman")%>%

  add_header_above(c(" " = 1, "Reference" = 1, " " = 3))%>%

  column_spec(1:5, width = "1.2cm")

ACT_Religion_cod <- c(AC1_Religion_cod,AC2_Religion_cod,AC3_Religion_cod)

ACM_Religion_cod <- mean(c(ACT_Religion_cod))

ACSD_Religion_cod <- sqrt(var(ACT_Religion_cod)/3)

 

-        Imputación de la valoración de la Situación Económica

# M = 1

train2_Situ_eco_cod <- conjunto[conjunto[,"Situ_eco_cod"]!="99",]

impu_Situ_eco_cod <- conjunto[conjunto[,"Situ_eco_cod"]=="99",]

dim(train2_Situ_eco_cod)[1]

dim(impu_Situ_eco_cod)[1]

table(train2_Situ_eco_cod$Situ_eco_cod)

train2_Situ_eco_cod[,"Situ_eco_cod"] <- droplevels(train2_Situ_eco_cod[,"Situ_eco_cod"])

table(train2_Situ_eco_cod$Situ_eco_cod)

ctrl <- trainControl(method = "cv", number = 5)

# RF train with CV to optimize number of variables

 

#library(doMC)

#registerDoMC(cores = 2)

set.seed(0, sample.kind = "Rounding")

rfFit_Situ_eco_cod <- train(Situ_eco_cod ~ .,

                            method = "rf",

                            data = train2_Situ_eco_cod,

                            preProcess = c("center", "scale"),

                            tuneGrid = expand.grid(mtry = c(2:10)),

                            trControl = ctrl)

rfFit_Situ_eco_cod

varImp(rfFit_Situ_eco_cod)

plot(varImp(rfFit_Situ_eco_cod), top = 10, col = "#74A9CF", main = "M1")

rfFit_Situ_eco_cod$finalModel

pred_Situ_eco_cod <- predict(rfFit_Situ_eco_cod, test)

impu_Situ_eco_cod1 <- predict(rfFit_Situ_eco_cod, impu_Situ_eco_cod)

table(pred_Situ_eco_cod)

test_Situ_eco_cod <- test$Situ_eco_cod[test$Situ_eco_cod!=99]

test_Situ_eco_cod <- droplevels(test_Situ_eco_cod)

confusionMatrix(pred_Situ_eco_cod[test$Situ_eco_cod!=99],test_Situ_eco_cod)

CM1_Situ_eco_cod <- confusionMatrix(pred_Situ_eco_cod[test$Situ_eco_cod!=99],test_Situ_eco_cod)$table

AC1_Situ_eco_cod <- as.vector(confusionMatrix(pred_Situ_eco_cod[test$Situ_eco_cod!=99],test_Situ_eco_cod)$overall[1])

NA_Situ_eco_cod <- as.numeric(rownames(test[test[,"Situ_eco_cod"]=='99',]))

pos = c()

for(i in 1:nrow(test))

{

  if(test[i,"Situ_eco_cod"]=="99")

  {

    pos=c(pos,i)

  }

}

NA_Situ_eco_cod_impu <- as.numeric(rownames(impu_Situ_eco_cod))

M1[NA_Situ_eco_cod,"Situ_eco_cod"] <- pred_Situ_eco_cod[pos]

M1[NA_Situ_eco_cod_impu,"Situ_eco_cod"] <- impu_Situ_eco_cod1

M = 2

set.seed(1, sample.kind = "Rounding")

rfFit2_Situ_eco_cod <- train(Situ_eco_cod ~ .,

                             method = "rf",

                             data = train2_Situ_eco_cod,

                             preProcess = c("center", "scale"),

                             tuneGrid = expand.grid(mtry = c(2:10)),

                             trControl = ctrl)

rfFit2_Situ_eco_cod

varImp(rfFit2_Situ_eco_cod)

plot(varImp(rfFit2_Situ_eco_cod), top = 10, col = "#0570B0", main = "M2")

rfFit2_Situ_eco_cod$finalModel

pred2_Situ_eco_cod <- predict(rfFit2_Situ_eco_cod, test)

impu_Situ_eco_cod2 <- predict(rfFit2_Situ_eco_cod, impu_Situ_eco_cod)

table(pred2_Situ_eco_cod)

confusionMatrix(pred2_Situ_eco_cod[test$Situ_eco_cod!=99],test_Situ_eco_cod)

CM2_Situ_eco_cod <- confusionMatrix(pred2_Situ_eco_cod[test$Situ_eco_cod!=99],test_Situ_eco_cod)$table

AC2_Situ_eco_cod <- as.vector(confusionMatrix(pred2_Situ_eco_cod[test$Situ_eco_cod!=99],test_Situ_eco_cod)$overall[1])

M2[NA_Situ_eco_cod,"Situ_eco_cod"] <- pred2_Situ_eco_cod[pos]

M2[NA_Situ_eco_cod_impu,"Situ_eco_cod"] <- impu_Situ_eco_cod2

M = 3

set.seed(2, sample.kind = "Rounding")

rfFit3_Situ_eco_cod <- train(Situ_eco_cod ~ .,

                             method = "rf",

                             data = train2_Situ_eco_cod,

                             preProcess = c("center", "scale"),

                             tuneGrid = expand.grid(mtry = c(2:10)),

                             trControl = ctrl)

rfFit3_Situ_eco_cod

varImp(rfFit3_Situ_eco_cod)

plot(varImp(rfFit3_Situ_eco_cod), top = 10, col = "#41AE76", main = "M3")

rfFit3_Situ_eco_cod$finalModel

pred3_Situ_eco_cod <- predict(rfFit3_Situ_eco_cod, test)

impu_Situ_eco_cod3 <- predict(rfFit3_Situ_eco_cod, impu_Situ_eco_cod)

table(pred3_Situ_eco_cod)

confusionMatrix(pred3_Situ_eco_cod[test$Situ_eco_cod!=99],test_Situ_eco_cod)

CM3_Situ_eco_cod <- confusionMatrix(pred3_Situ_eco_cod[test$Situ_eco_cod!=99],test_Situ_eco_cod)$table

AC3_Situ_eco_cod <- as.vector(confusionMatrix(pred3_Situ_eco_cod[test$Situ_eco_cod!=99],test_Situ_eco_cod)$overall[1])

M3[NA_Situ_eco_cod,"Situ_eco_cod"] <- pred3_Situ_eco_cod[pos]

M3[NA_Situ_eco_cod_impu,"Situ_eco_cod"] <- impu_Situ_eco_cod3

Matriz Confusión

CMT_Situ_eco_cod <- (CM1_Situ_eco_cod)

for(i in 1:nrow(CMT_Situ_eco_cod))

{

  for(j in 1:ncol(CMT_Situ_eco_cod))

  {

    if((CM1_Situ_eco_cod[i,j]+CM2_Situ_eco_cod[i,j]+CM3_Situ_eco_cod[i,j])%%3 != 0)

    {

      CMT_Situ_eco_cod[i,j] = as.character(round((CM1_Situ_eco_cod[i,j]+CM2_Situ_eco_cod[i,j]+CM3_Situ_eco_cod[i,j])/3,2))

    }else{

      CMT_Situ_eco_cod[i,j] = as.character(as.integer((CM1_Situ_eco_cod[i,j]+CM2_Situ_eco_cod[i,j]+CM3_Situ_eco_cod[i,j])/3))

    }

  }

}

CMT_Situ_eco_cod = cbind(c(1:5), CMT_Situ_eco_cod)

kable(CMT_Situ_eco_cod, position = "center", booktabs = TRUE, align = "cccccc", caption = "<left><em> Matriz de confusión Situación económica </em></center>", escape = FALSE, col.names = c("Prediction", "1","2","3", "4", "5"), position = "center", row_label_position = "c", font_size = 15)%>%

  kableExtra::footnote(symbol = c("Al tomar la media de los elementos de las matrices de confusión,  

            es posible que no se obtenga un número entero"), threeparttable=T)%>%

  kable_classic(full_width = F,  html_font = "Times New Roman")%>%

  add_header_above(c(" " = 1, "Reference" = 1, " " = 4))%>%

  column_spec(1:6, width = "1.2cm")

ACT_Situ_eco_cod <- c(AC1_Situ_eco_cod,AC2_Situ_eco_cod,AC3_Situ_eco_cod)

ACM_Situ_eco_cod <- mean(c(ACT_Situ_eco_cod))

ACSD_Situ_eco_cod <- sqrt(var(ACT_Situ_eco_cod)/3)

 

-        Imputación de la Confianza en el presidente actual

# M = 1

train2_Conf_presi_cod <- conjunto[conjunto[,"Conf_presi_cod"]!="99",]

impu_Conf_presi_cod <- conjunto[conjunto[,"Conf_presi_cod"]=="99",]

dim(train2_Conf_presi_cod)[1]

dim(impu_Conf_presi_cod)[1]

table(train2_Conf_presi_cod$Conf_presi_cod)

train2_Conf_presi_cod[,"Conf_presi_cod"] <- droplevels(train2_Conf_presi_cod[,"Conf_presi_cod"])

table(train2_Conf_presi_cod$Conf_presi_cod)

ctrl <- trainControl(method = "cv", number = 5)

# RF train with CV to optimize number of variables

#library(doMC)

#registerDoMC(cores = 2)

set.seed(0, sample.kind = "Rounding")

rfFit_Conf_presi_cod <- train(Conf_presi_cod ~ .,

                              method = "rf",

                              data = train2_Conf_presi_cod,

                              preProcess = c("center", "scale"),

                              tuneGrid = expand.grid(mtry = c(2:10)),

                              trControl = ctrl)

rfFit_Conf_presi_cod

varImp(rfFit_Conf_presi_cod)

plot(varImp(rfFit_Conf_presi_cod), top = 10, col = "#74A9CF", main = "M1")

rfFit_Conf_presi_cod$finalModel

pred_Conf_presi_cod <- predict(rfFit_Conf_presi_cod, test)

impu_Conf_presi_cod1 <- predict(rfFit_Conf_presi_cod, impu_Conf_presi_cod)

table(pred_Conf_presi_cod)

test_Conf_presi_cod <- test$Conf_presi_cod[test$Conf_presi_cod!=99]

test_Conf_presi_cod <- droplevels(test_Conf_presi_cod)

confusionMatrix(pred_Conf_presi_cod[test$Conf_presi_cod!=99],test_Conf_presi_cod)

CM1_Conf_presi_cod <- confusionMatrix(pred_Conf_presi_cod[test$Conf_presi_cod!=99],test_Conf_presi_cod)$table

AC1_Conf_presi_cod <- as.vector(confusionMatrix(pred_Conf_presi_cod[test$Conf_presi_cod!=99],test_Conf_presi_cod)$overall[1])

NA_Conf_presi_cod <- as.numeric(rownames(test[test[,"Conf_presi_cod"]=='99',]))

pos = c()

for(i in 1:nrow(test))

{

  if(test[i,"Conf_presi_cod"]=="99")

  {

    pos=c(pos,i)

  }

}

NA_Conf_presi_cod_impu <- as.numeric(rownames(impu_Conf_presi_cod))

M1[NA_Conf_presi_cod,"Conf_presi_cod"] <- pred_Conf_presi_cod[pos]

M1[NA_Conf_presi_cod_impu,"Conf_presi_cod"] <- impu_Conf_presi_cod1

M = 2

set.seed(1, sample.kind = "Rounding")

rfFit2_Conf_presi_cod <- train(Conf_presi_cod ~ .,

                               method = "rf",

                               data = train2_Conf_presi_cod,

                               preProcess = c("center", "scale"),

                               tuneGrid = expand.grid(mtry = c(2:10)),

                               trControl = ctrl)

 

rfFit2_Conf_presi_cod

varImp(rfFit2_Conf_presi_cod)

plot(varImp(rfFit2_Conf_presi_cod), top = 10, col = "#0570B0", main = "M2")

rfFit2_Conf_presi_cod$finalModel

pred2_Conf_presi_cod <- predict(rfFit2_Conf_presi_cod, test)

impu_Conf_presi_cod2 <- predict(rfFit2_Conf_presi_cod, impu_Conf_presi_cod)

table(pred2_Conf_presi_cod)

confusionMatrix(pred2_Conf_presi_cod[test$Conf_presi_cod!=99],test_Conf_presi_cod)

CM2_Conf_presi_cod <- confusionMatrix(pred2_Conf_presi_cod[test$Conf_presi_cod!=99],test_Conf_presi_cod)$table

AC2_Conf_presi_cod <- as.vector(confusionMatrix(pred2_Conf_presi_cod[test$Conf_presi_cod!=99],test_Conf_presi_cod)$overall[1])

M2[NA_Conf_presi_cod,"Conf_presi_cod"] <- pred2_Conf_presi_cod[pos]

M2[NA_Conf_presi_cod_impu,"Conf_presi_cod"] <- impu_Conf_presi_cod2

M = 3

set.seed(2, sample.kind = "Rounding")

rfFit3_Conf_presi_cod <- train(Conf_presi_cod ~ .,

                               method = "rf",

                               data = train2_Conf_presi_cod,

                               preProcess = c("center", "scale"),

                               tuneGrid = expand.grid(mtry = c(2:10)),

                               trControl = ctrl)

rfFit3_Conf_presi_cod

varImp(rfFit3_Conf_presi_cod)

plot(varImp(rfFit3_Conf_presi_cod), top = 10, col = "#41AE76", main = "M3")

rfFit3_Conf_presi_cod$finalModel

pred3_Conf_presi_cod <- predict(rfFit3_Conf_presi_cod, test)

impu_Conf_presi_cod3 <- predict(rfFit3_Conf_presi_cod, impu_Conf_presi_cod)

table(pred3_Conf_presi_cod)

confusionMatrix(pred3_Conf_presi_cod[test$Conf_presi_cod!=99],test_Conf_presi_cod)

CM3_Conf_presi_cod <- confusionMatrix(pred3_Conf_presi_cod[test$Conf_presi_cod!=99],test_Conf_presi_cod)$table

AC3_Conf_presi_cod <- as.vector(confusionMatrix(pred3_Conf_presi_cod[test$Conf_presi_cod!=99],test_Conf_presi_cod)$overall[1])

M3[NA_Conf_presi_cod,"Conf_presi_cod"] <- pred3_Conf_presi_cod[pos]

M3[NA_Conf_presi_cod_impu,"Conf_presi_cod"] <- impu_Conf_presi_cod3

Conf Presi

CMT_Conf_presi_cod <- (CM1_Conf_presi_cod)

for(i in 1:nrow(CMT_Conf_presi_cod))

{

  for(j in 1:ncol(CMT_Conf_presi_cod))

  {

    if((CM1_Conf_presi_cod[i,j]+CM2_Conf_presi_cod[i,j]+CM3_Conf_presi_cod[i,j])%%3 != 0)

    {

      CMT_Conf_presi_cod[i,j] = as.character(round((CM1_Conf_presi_cod[i,j]+CM2_Conf_presi_cod[i,j]+CM3_Conf_presi_cod[i,j])/3,2))

    }else{

      CMT_Conf_presi_cod[i,j] = as.character(as.integer((CM1_Conf_presi_cod[i,j]+CM2_Conf_presi_cod[i,j]+CM3_Conf_presi_cod[i,j])/3))

    }

  }

}

 

CMT_Conf_presi_cod = cbind(c(1:4), CMT_Conf_presi_cod)

kable(CMT_Conf_presi_cod, position = "center", booktabs = TRUE, align = "cccccc", caption = "<left><em> Matriz de confusión Confianza en el Presidente del gobierno </em></center>", escape = FALSE, col.names = c("Prediction", "1","2","3", "4"), position = "center", row_label_position = "c", font_size = 15)%>%

  kableExtra::footnote(symbol = c("Al tomar la media de los elementos de las matrices de confusión,  

            es posible que no se obtenga un número entero"), threeparttable=T)%>%

  kable_classic(full_width = F,  html_font = "Times New Roman")%>%

  add_header_above(c(" " = 1, "Reference" = 1, " " = 3))%>%

  column_spec(1:5, width = "1.2cm")

ACT_Conf_presi_cod <- c(AC1_Conf_presi_cod,AC2_Conf_presi_cod,AC3_Conf_presi_cod)

ACM_Conf_presi_cod <- mean(c(ACT_Conf_presi_cod))

ACSD_Conf_presi_cod <- sqrt(var(ACT_Conf_presi_cod)/3)

 

-        Imputación de la clase social

# M = 1

train2_clase_cod <- conjunto[conjunto[,"clase_cod"]!="99",]

impu_clase_cod <- conjunto[conjunto[,"clase_cod"]=="99",]

dim(train2_clase_cod)[1]

dim(impu_clase_cod)[1]

table(train2_clase_cod$clase_cod)

train2_clase_cod[,"clase_cod"] <- droplevels(train2_clase_cod[,"clase_cod"])

table(train2_clase_cod$clase_cod)

ctrl <- trainControl(method = "cv", number = 5)

# RF train with CV to optimize number of variables

#library(doMC)

#registerDoMC(cores = 2)

set.seed(0, sample.kind = "Rounding")

rfFit_clase_cod <- train(clase_cod ~ .,

                         method = "rf",

                         data = train2_clase_cod,

                         preProcess = c("center", "scale"),

                         tuneGrid = expand.grid(mtry = c(2:10)),

                         trControl = ctrl)

rfFit_clase_cod

varImp(rfFit_clase_cod)

plot(varImp(rfFit_clase_cod), top = 10, col = "#74A9CF", main = "M1")

rfFit_clase_cod$finalModel

pred_clase_cod <- predict(rfFit_clase_cod, test)

impu_clase_cod1 <- predict(rfFit_clase_cod, impu_clase_cod)

table(pred_clase_cod)

test_clase_cod <- test$clase_cod[test$clase_cod!=99]

test_clase_cod <- droplevels(test_clase_cod)

confusionMatrix(pred_clase_cod[test$clase_cod!=99],test_clase_cod)

CM1_clase_cod <- confusionMatrix(pred_clase_cod[test$clase_cod!=99],test_clase_cod)$table

AC1_clase_cod <- as.vector(confusionMatrix(pred_clase_cod[test$clase_cod!=99],test_clase_cod)$overall[1])

NA_clase_cod <- as.numeric(rownames(test[test[,"clase_cod"]=='99',]))

pos = c()

for(i in 1:nrow(test))

{

  if(test[i,"clase_cod"]=="99")

  {

    pos=c(pos,i)

  }

}

NA_clase_cod_impu <- as.numeric(rownames(impu_clase_cod))

M1[NA_clase_cod,"clase_cod"] <- pred_clase_cod[pos]

M1[NA_clase_cod_impu,"clase_cod"] <- impu_clase_cod1

M = 2

set.seed(1, sample.kind = "Rounding")

rfFit2_clase_cod <- train(clase_cod ~ .,

                          method = "rf",

                          data = train2_clase_cod,

                          preProcess = c("center", "scale"),

                          tuneGrid = expand.grid(mtry = c(2:10)),

                          trControl = ctrl)

rfFit2_clase_cod

varImp(rfFit2_clase_cod)

plot(varImp(rfFit2_clase_cod), top = 10, col = "#0570B0", main = "M2")

rfFit2_clase_cod$finalModel

pred2_clase_cod <- predict(rfFit2_clase_cod, test)

impu_clase_cod2 <- predict(rfFit2_clase_cod, impu_clase_cod)

table(pred2_clase_cod)

confusionMatrix(pred2_clase_cod[test$clase_cod!=99],test_clase_cod)

CM2_clase_cod <- confusionMatrix(pred2_clase_cod[test$clase_cod!=99],test_clase_cod)$table

AC2_clase_cod <- as.vector(confusionMatrix(pred2_clase_cod[test$clase_cod!=99],test_clase_cod)$overall[1])

M2[NA_clase_cod,"clase_cod"] <- pred2_clase_cod[pos]

M2[NA_clase_cod_impu,"clase_cod"] <- impu_clase_cod2

M = 3

set.seed(2, sample.kind = "Rounding")

rfFit3_clase_cod <- train(clase_cod ~ .,

                          method = "rf",

                          data = train2_clase_cod,

                          preProcess = c("center", "scale"),

                          tuneGrid = expand.grid(mtry = c(2:10)),

                          trControl = ctrl)

rfFit3_clase_cod

varImp(rfFit3_clase_cod)

plot(varImp(rfFit3_clase_cod), top = 10, col = "#41AE76", main = "M3")

rfFit3_clase_cod$finalModel

pred3_clase_cod <- predict(rfFit3_clase_cod, test)

impu_clase_cod3 <- predict(rfFit3_clase_cod, impu_clase_cod)

table(pred3_clase_cod)

confusionMatrix(pred3_clase_cod[test$clase_cod!=99],test_clase_cod)

CM3_clase_cod <- confusionMatrix(pred3_clase_cod[test$clase_cod!=99],test_clase_cod)$table

AC3_clase_cod <- as.vector(confusionMatrix(pred3_clase_cod[test$clase_cod!=99],test_clase_cod)$overall[1])

M3[NA_clase_cod,"clase_cod"] <- pred3_clase_cod[pos]

M3[NA_clase_cod_impu,"clase_cod"] <- impu_clase_cod3

CMT_clase_cod <- (CM1_clase_cod)

for(i in 1:nrow(CMT_clase_cod))

{

  for(j in 1:ncol(CMT_clase_cod))

  {

    if((CM1_clase_cod[i,j]+CM2_clase_cod[i,j]+CM3_clase_cod[i,j])%%3 != 0)

    {

      CMT_clase_cod[i,j] = as.character(round((CM1_clase_cod[i,j]+CM2_clase_cod[i,j]+CM3_clase_cod[i,j])/3,2))

    }else{

      CMT_clase_cod[i,j] = as.character(as.integer((CM1_clase_cod[i,j]+CM2_clase_cod[i,j]+CM3_clase_cod[i,j])/3))

    }

  }

}

 

CMT_clase_cod = cbind(c(1:5), CMT_clase_cod)

kable(CMT_clase_cod, position = "center", booktabs = TRUE, align = "cccccc", caption = "<left><em> Matriz de confusión Clase social </em></center>", escape = FALSE, col.names = c("Prediction", "1","2","3", "4", "5"), position = "center", row_label_position = "c", font_size = 15)%>%

  kableExtra::footnote(symbol = c("Al tomar la media de los elementos de las matrices de confusión,  

            es posible que no se obtenga un número entero"), threeparttable=T)%>%

  kable_classic(full_width = F,  html_font = "Times New Roman")%>%

  add_header_above(c(" " = 1, "Reference" = 1, " " = 4))%>%

  column_spec(1:6, width = "1.2cm")

ACT_clase_cod <- c(AC1_clase_cod,AC2_clase_cod,AC3_clase_cod)

ACM_clase_cod <- mean(c(ACT_clase_cod))

ACSD_clase_cod <- sqrt(var(ACT_clase_cod)/3)

 

-        Imputación de la confianza en la oposición

# M = 1

train2_Conf_opo_cod <- conjunto[conjunto[,"Conf_opo_cod"]!="99",]

impu_Conf_opo_cod <- conjunto[conjunto[,"Conf_opo_cod"]=="99",]

dim(train2_Conf_opo_cod)[1]

dim(impu_Conf_opo_cod)[1]

table(train2_Conf_opo_cod$Conf_opo_cod)

train2_Conf_opo_cod[,"Conf_opo_cod"] <- droplevels(train2_Conf_opo_cod[,"Conf_opo_cod"])

table(train2_Conf_opo_cod$Conf_opo_cod)

ctrl <- trainControl(method = "cv", number = 5)

# RF train with CV to optimize number of variables

#library(doMC)

#registerDoMC(cores = 2)

set.seed(0, sample.kind = "Rounding")

rfFit_Conf_opo_cod <- train(Conf_opo_cod ~ .,

                            method = "rf",

                            data = train2_Conf_opo_cod,

                            preProcess = c("center", "scale"),

                            tuneGrid = expand.grid(mtry = c(2:10)),

                            trControl = ctrl)

rfFit_Conf_opo_cod

varImp(rfFit_Conf_opo_cod)

plot(varImp(rfFit_Conf_opo_cod), top = 10, col = "#74A9CF", main = "M1")

rfFit_Conf_opo_cod$finalModel

pred_Conf_opo_cod <- predict(rfFit_Conf_opo_cod, test)

impu_Conf_opo_cod1 <- predict(rfFit_Conf_opo_cod, impu_Conf_opo_cod)

table(pred_Conf_opo_cod)

test_Conf_opo_cod <- test$Conf_opo_cod[test$Conf_opo_cod!=99]

test_Conf_opo_cod <- droplevels(test_Conf_opo_cod)

confusionMatrix(pred_Conf_opo_cod[test$Conf_opo_cod!=99],test_Conf_opo_cod)

CM1_Conf_opo_cod <- confusionMatrix(pred_Conf_opo_cod[test$Conf_opo_cod!=99],test_Conf_opo_cod)$table

AC1_Conf_opo_cod <- as.vector(confusionMatrix(pred_Conf_opo_cod[test$Conf_opo_cod!=99],test_Conf_opo_cod)$overall[1])

NA_Conf_opo_cod <- as.numeric(rownames(test[test[,"Conf_opo_cod"]=='99',]))

pos = c()

for(i in 1:nrow(test))

{

  if(test[i,"Conf_opo_cod"]=="99")

  {

    pos=c(pos,i)

  }

}

NA_Conf_opo_cod_impu <- as.numeric(rownames(impu_Conf_opo_cod))

M1[NA_Conf_opo_cod,"Conf_opo_cod"] <- pred_Conf_opo_cod[pos]

M1[NA_Conf_opo_cod_impu,"Conf_opo_cod"] <- impu_Conf_opo_cod1

M = 2

set.seed(1, sample.kind = "Rounding")

rfFit2_Conf_opo_cod <- train(Conf_opo_cod ~ .,

                             method = "rf",

                             data = train2_Conf_opo_cod,

                             preProcess = c("center", "scale"),

                             tuneGrid = expand.grid(mtry = c(2:10)),

                             trControl = ctrl)

rfFit2_Conf_opo_cod

varImp(rfFit2_Conf_opo_cod)

plot(varImp(rfFit2_Conf_opo_cod), top = 10, col = "#0570B0", main = "M2")

rfFit2_Conf_opo_cod$finalModel

pred2_Conf_opo_cod <- predict(rfFit2_Conf_opo_cod, test)

impu_Conf_opo_cod2 <- predict(rfFit2_Conf_opo_cod, impu_Conf_opo_cod)

table(pred2_Conf_opo_cod)

confusionMatrix(pred2_Conf_opo_cod[test$Conf_opo_cod!=99],test_Conf_opo_cod)

CM2_Conf_opo_cod <- confusionMatrix(pred2_Conf_opo_cod[test$Conf_opo_cod!=99],test_Conf_opo_cod)$table

AC2_Conf_opo_cod <- as.vector(confusionMatrix(pred2_Conf_opo_cod[test$Conf_opo_cod!=99],test_Conf_opo_cod)$overall[1])

M2[NA_Conf_opo_cod,"Conf_opo_cod"] <- pred2_Conf_opo_cod[pos]

M2[NA_Conf_opo_cod_impu,"Conf_opo_cod"] <- impu_Conf_opo_cod2

M = 3

set.seed(2, sample.kind = "Rounding")

rfFit3_Conf_opo_cod <- train(Conf_opo_cod ~ .,

                             method = "rf",

                             data = train2_Conf_opo_cod,

                             preProcess = c("center", "scale"),

                             tuneGrid = expand.grid(mtry = c(2:10)),

                             trControl = ctrl)

rfFit3_Conf_opo_cod

varImp(rfFit3_Conf_opo_cod)

plot(varImp(rfFit3_Conf_opo_cod), top = 10, col = "#41AE76", main = "M3")

rfFit3_Conf_opo_cod$finalModel

pred3_Conf_opo_cod <- predict(rfFit3_Conf_opo_cod, test)

impu_Conf_opo_cod3 <- predict(rfFit3_Conf_opo_cod, impu_Conf_opo_cod)

table(pred3_Conf_opo_cod)

confusionMatrix(pred3_Conf_opo_cod[test$Conf_opo_cod!=99],test_Conf_opo_cod)

CM3_Conf_opo_cod <- confusionMatrix(pred3_Conf_opo_cod[test$Conf_opo_cod!=99],test_Conf_opo_cod)$table

AC3_Conf_opo_cod <- as.vector(confusionMatrix(pred3_Conf_opo_cod[test$Conf_opo_cod!=99],test_Conf_opo_cod)$overall[1])

M3[NA_Conf_opo_cod,"Conf_opo_cod"] <- pred3_Conf_opo_cod[pos]

M3[NA_Conf_opo_cod_impu,"Conf_opo_cod"] <- impu_Conf_opo_cod3

Matriz de confusión

CMT_Conf_opo_cod <- (CM1_Conf_opo_cod)

for(i in 1:nrow(CMT_Conf_opo_cod))

{

  for(j in 1:ncol(CMT_Conf_opo_cod))

  {

    if((CM1_Conf_opo_cod[i,j]+CM2_Conf_opo_cod[i,j]+CM3_Conf_opo_cod[i,j])%%3 != 0)

    {

      CMT_Conf_opo_cod[i,j] = as.character(round((CM1_Conf_opo_cod[i,j]+CM2_Conf_opo_cod[i,j]+CM3_Conf_opo_cod[i,j])/3,2))

    }else{

      CMT_Conf_opo_cod[i,j] = as.character(as.integer((CM1_Conf_opo_cod[i,j]+CM2_Conf_opo_cod[i,j]+CM3_Conf_opo_cod[i,j])/3))

    }

  }

}

CMT_Conf_opo_cod = cbind(c(1:4), CMT_Conf_opo_cod)

kable(CMT_Conf_opo_cod, position = "center", booktabs = TRUE, align = "cccccc", caption = "<left><em> Matriz de confusión Confianza en el presidente de la oposición (Pablo Casado) </em></center>", escape = FALSE, col.names = c("Prediction", "1","2","3", "4"), position = "center", row_label_position = "c", font_size = 15)%>%

  kableExtra::footnote(symbol = c("Al tomar la media de los elementos de las matrices de confusión,  

            es posible que no se obtenga un número entero"), threeparttable=T)%>%

  kable_classic(full_width = F,  html_font = "Times New Roman")%>%

  add_header_above(c(" " = 1, "Reference" = 1, " " = 3))%>%

  column_spec(1:5, width = "1.2cm")

ACT_Conf_opo_cod <- c(AC1_Conf_opo_cod,AC2_Conf_opo_cod,AC3_Conf_opo_cod)

ACM_Conf_opo_cod <- mean(c(ACT_Conf_opo_cod))

ACSD_Conf_opo_cod <- sqrt(var(ACT_Conf_opo_cod)/3)

 

- Imputación de la Valoración de Pedro Sánchez

# M = 1

train2_Valoracion_ps_cod <- conjunto[conjunto[,"Valoracion_ps_cod"]!="99",]

impu_Valoracion_ps_cod <- conjunto[conjunto[,"Valoracion_ps_cod"]=="99",]

dim(train2_Valoracion_ps_cod)[1]

dim(impu_Valoracion_ps_cod)[1]

table(train2_Valoracion_ps_cod$Valoracion_ps_cod)

train2_Valoracion_ps_cod[,"Valoracion_ps_cod"] <- droplevels(train2_Valoracion_ps_cod[,"Valoracion_ps_cod"])

table(train2_Valoracion_ps_cod$Valoracion_ps_cod)

ctrl <- trainControl(method = "cv", number = 5)

# RF train with CV to optimize number of variables

#library(doMC)

#registerDoMC(cores = 2)

set.seed(0, sample.kind = "Rounding")

rfFit_Valoracion_ps_cod <- train(Valoracion_ps_cod ~ .,

                                 method = "rf",

                                 data = train2_Valoracion_ps_cod,

                                 preProcess = c("center", "scale"),

                                 tuneGrid = expand.grid(mtry = c(2:10)),

                                 trControl = ctrl)

rfFit_Valoracion_ps_cod

varImp(rfFit_Valoracion_ps_cod)

plot(varImp(rfFit_Valoracion_ps_cod), top = 10, col = "#74A9CF", main = "M1")

rfFit_Valoracion_ps_cod$finalModel

pred_Valoracion_ps_cod <- predict(rfFit_Valoracion_ps_cod, test)

impu_Valoracion_ps_cod1 <- predict(rfFit_Valoracion_ps_cod, impu_Valoracion_ps_cod)

table(pred_Valoracion_ps_cod)

test_Valoracion_ps_cod <- test$Valoracion_ps_cod[test$Valoracion_ps_cod!=99]

test_Valoracion_ps_cod <- droplevels(test_Valoracion_ps_cod)

confusionMatrix(pred_Valoracion_ps_cod[test$Valoracion_ps_cod!=99],test_Valoracion_ps_cod)

CM1_Valoracion_ps_cod <- confusionMatrix(pred_Valoracion_ps_cod[test$Valoracion_ps_cod!=99],test_Valoracion_ps_cod)$table

AC1_Valoracion_ps_cod <- as.vector(confusionMatrix(pred_Valoracion_ps_cod[test$Valoracion_ps_cod!=99],test_Valoracion_ps_cod)$overall[1])

NA_Valoracion_ps_cod <- as.numeric(rownames(test[test[,"Valoracion_ps_cod"]=='99',]))

pos = c()

for(i in 1:nrow(test))

{

  if(test[i,"Valoracion_ps_cod"]=="99")

  {

    pos=c(pos,i)

  }

}

NA_Valoracion_ps_cod_impu <- as.numeric(rownames(impu_Valoracion_ps_cod))

M1[NA_Valoracion_ps_cod,"Valoracion_ps_cod"] <- pred_Valoracion_ps_cod[pos]

M1[NA_Valoracion_ps_cod_impu,"Valoracion_ps_cod"] <- impu_Valoracion_ps_cod1

M = 2

set.seed(1, sample.kind = "Rounding")

rfFit2_Valoracion_ps_cod <- train(Valoracion_ps_cod ~ .,

                                  method = "rf",

                                  data = train2_Valoracion_ps_cod,

                                  preProcess = c("center", "scale"),

                                  tuneGrid = expand.grid(mtry = c(2:10)),

                                  trControl = ctrl)

rfFit2_Valoracion_ps_cod

varImp(rfFit2_Valoracion_ps_cod)

plot(varImp(rfFit2_Valoracion_ps_cod), top = 10, col = "#0570B0", main = "M2")

rfFit2_Valoracion_ps_cod$finalModel

pred2_Valoracion_ps_cod <- predict(rfFit2_Valoracion_ps_cod, test)

impu_Valoracion_ps_cod2 <- predict(rfFit2_Valoracion_ps_cod, impu_Valoracion_ps_cod)

table(pred2_Valoracion_ps_cod)

confusionMatrix(pred2_Valoracion_ps_cod[test$Valoracion_ps_cod!=99],test_Valoracion_ps_cod)

CM2_Valoracion_ps_cod <- confusionMatrix(pred2_Valoracion_ps_cod[test$Valoracion_ps_cod!=99],test_Valoracion_ps_cod)$table

AC2_Valoracion_ps_cod <- as.vector(confusionMatrix(pred2_Valoracion_ps_cod[test$Valoracion_ps_cod!=99],test_Valoracion_ps_cod)$overall[1])

M2[NA_Valoracion_ps_cod,"Valoracion_ps_cod"] <- pred2_Valoracion_ps_cod[pos]

M2[NA_Valoracion_ps_cod_impu,"Valoracion_ps_cod"] <- impu_Valoracion_ps_cod2

M = 3

set.seed(2, sample.kind = "Rounding")

rfFit3_Valoracion_ps_cod <- train(Valoracion_ps_cod ~ .,

                                  method = "rf",

                                  data = train2_Valoracion_ps_cod,

                                  preProcess = c("center", "scale"),

                                  tuneGrid = expand.grid(mtry = c(2:10)),

                                  trControl = ctrl)

rfFit3_Valoracion_ps_cod

varImp(rfFit3_Valoracion_ps_cod)

plot(varImp(rfFit3_Valoracion_ps_cod), top = 10, col = "#41AE76", main = "M3")

rfFit3_Valoracion_ps_cod$finalModel

pred3_Valoracion_ps_cod <- predict(rfFit3_Valoracion_ps_cod, test)

impu_Valoracion_ps_cod3 <- predict(rfFit3_Valoracion_ps_cod, impu_Valoracion_ps_cod)

table(pred3_Valoracion_ps_cod)

confusionMatrix(pred3_Valoracion_ps_cod[test$Valoracion_ps_cod!=99],test_Valoracion_ps_cod)

CM3_Valoracion_ps_cod <- confusionMatrix(pred3_Valoracion_ps_cod[test$Valoracion_ps_cod!=99],test_Valoracion_ps_cod)$table

AC3_Valoracion_ps_cod <- as.vector(confusionMatrix(pred3_Valoracion_ps_cod[test$Valoracion_ps_cod!=99],test_Valoracion_ps_cod)$overall[1])

M3[NA_Valoracion_ps_cod,"Valoracion_ps_cod"] <- pred3_Valoracion_ps_cod[pos]

M3[NA_Valoracion_ps_cod_impu,"Valoracion_ps_cod"] <- impu_Valoracion_ps_cod3

Matriz confusión

CMT_Valoracion_ps_cod <- (CM1_Valoracion_ps_cod)

for(i in 1:nrow(CMT_Valoracion_ps_cod))

{

  for(j in 1:ncol(CMT_Valoracion_ps_cod))

  {

    if((CM1_Valoracion_ps_cod[i,j]+CM2_Valoracion_ps_cod[i,j]+CM3_Valoracion_ps_cod[i,j])%%3 != 0)

    {

      CMT_Valoracion_ps_cod[i,j] = as.character(round((CM1_Valoracion_ps_cod[i,j]+CM2_Valoracion_ps_cod[i,j]+CM3_Valoracion_ps_cod[i,j])/3,2))

    }else{

      CMT_Valoracion_ps_cod[i,j] = as.character(as.integer((CM1_Valoracion_ps_cod[i,j]+CM2_Valoracion_ps_cod[i,j]+CM3_Valoracion_ps_cod[i,j])/3))

    }

  }

}

CMT_Valoracion_ps_cod = cbind(c(1:6), CMT_Valoracion_ps_cod)

kable(CMT_Valoracion_ps_cod, position = "center", booktabs = TRUE, align = "cccccc", caption = "<left><em> Matriz de confusión Valoración Pedro Sánchez </em></center>", escape = FALSE, col.names = c("Prediction", "1","2","3", "4", "5", "6"), position = "center", row_label_position = "c", font_size = 15)%>%

  kableExtra::footnote(symbol = c("Al tomar la media de los elementos de las matrices de confusión,  

            es posible que no se obtenga un número entero"), threeparttable=T)%>%

  kable_classic(full_width = F,  html_font = "Times New Roman")%>%

  add_header_above(c(" " = 1, "Reference" = 1, " " = 5))%>%

  column_spec(1:7, width = "1.2cm")

ACT_Valoracion_ps_cod <- c(AC1_Valoracion_ps_cod,AC2_Valoracion_ps_cod,AC3_Valoracion_ps_cod)

ACM_Valoracion_ps_cod <- mean(c(ACT_Valoracion_ps_cod))

ACSD_Valoracion_ps_cod <- sqrt(var(ACT_Valoracion_ps_cod)/3)

 

-         Imputación de la valoración de Pablo Iglesias

# M = 1

train2_Valoracion_pi_cod <- conjunto[conjunto[,"Valoracion_pi_cod"]!="99",]

impu_Valoracion_pi_cod <- conjunto[conjunto[,"Valoracion_pi_cod"]=="99",]

dim(train2_Valoracion_pi_cod)[1]

dim(impu_Valoracion_pi_cod)[1]

table(train2_Valoracion_pi_cod$Valoracion_pi_cod)

train2_Valoracion_pi_cod[,"Valoracion_pi_cod"] <- droplevels(train2_Valoracion_pi_cod[,"Valoracion_pi_cod"])

table(train2_Valoracion_pi_cod$Valoracion_pi_cod)

ctrl <- trainControl(method = "cv", number = 5)

# RF train with CV to optimize number of variables

#library(doMC)

#registerDoMC(cores = 2)

set.seed(0, sample.kind = "Rounding")

rfFit_Valoracion_pi_cod <- train(Valoracion_pi_cod ~ .,

                                 method = "rf",

                                 data = train2_Valoracion_pi_cod,

                                 preProcess = c("center", "scale"),

                                 tuneGrid = expand.grid(mtry = c(2:10)),

                                 trControl = ctrl)

rfFit_Valoracion_pi_cod

varImp(rfFit_Valoracion_pi_cod)

plot(varImp(rfFit_Valoracion_pi_cod), top = 10, col = "#74A9CF", main = "M1")

rfFit_Valoracion_pi_cod$finalModel

pred_Valoracion_pi_cod <- predict(rfFit_Valoracion_pi_cod, test)

impu_Valoracion_pi_cod1 <- predict(rfFit_Valoracion_pi_cod, impu_Valoracion_pi_cod)

table(pred_Valoracion_pi_cod)

test_Valoracion_pi_cod <- test$Valoracion_pi_cod[test$Valoracion_pi_cod!=99]

test_Valoracion_pi_cod <- droplevels(test_Valoracion_pi_cod)

confusionMatrix(pred_Valoracion_pi_cod[test$Valoracion_pi_cod!=99],test_Valoracion_pi_cod)

CM1_Valoracion_pi_cod <- confusionMatrix(pred_Valoracion_pi_cod[test$Valoracion_pi_cod!=99],test_Valoracion_pi_cod)$table

AC1_Valoracion_pi_cod <- as.vector(confusionMatrix(pred_Valoracion_pi_cod[test$Valoracion_pi_cod!=99],test_Valoracion_pi_cod)$overall[1])

NA_Valoracion_pi_cod <- as.numeric(rownames(test[test[,"Valoracion_pi_cod"]=='99',]))

pos = c()

for(i in 1:nrow(test))

{

  if(test[i,"Valoracion_pi_cod"]=="99")

  {

    pos=c(pos,i)

  }

}

NA_Valoracion_pi_cod_impu <- as.numeric(rownames(impu_Valoracion_pi_cod))

 

M1[NA_Valoracion_pi_cod,"Valoracion_pi_cod"] <- pred_Valoracion_pi_cod[pos]

M1[NA_Valoracion_pi_cod_impu,"Valoracion_pi_cod"] <- impu_Valoracion_pi_cod1

M = 2

set.seed(1, sample.kind = "Rounding")

rfFit2_Valoracion_pi_cod <- train(Valoracion_pi_cod ~ .,

                                  method = "rf",

                                  data = train2_Valoracion_pi_cod,

                                  preProcess = c("center", "scale"),

                                  tuneGrid = expand.grid(mtry = c(2:10)),

                                  trControl = ctrl)

rfFit2_Valoracion_pi_cod

varImp(rfFit2_Valoracion_pi_cod)

plot(varImp(rfFit2_Valoracion_pi_cod), top = 10, col = "#0570B0", main = "M2")

rfFit2_Valoracion_pi_cod$finalModel

pred2_Valoracion_pi_cod <- predict(rfFit2_Valoracion_pi_cod, test)

impu_Valoracion_pi_cod2 <- predict(rfFit2_Valoracion_pi_cod, impu_Valoracion_pi_cod)

table(pred2_Valoracion_pi_cod)

confusionMatrix(pred2_Valoracion_pi_cod[test$Valoracion_pi_cod!=99],test_Valoracion_pi_cod)

CM2_Valoracion_pi_cod <- confusionMatrix(pred2_Valoracion_pi_cod[test$Valoracion_pi_cod!=99],test_Valoracion_pi_cod)$table

AC2_Valoracion_pi_cod <- as.vector(confusionMatrix(pred2_Valoracion_pi_cod[test$Valoracion_pi_cod!=99],test_Valoracion_pi_cod)$overall[1])

M2[NA_Valoracion_pi_cod,"Valoracion_pi_cod"] <- pred2_Valoracion_pi_cod[pos]

M2[NA_Valoracion_pi_cod_impu,"Valoracion_pi_cod"] <- impu_Valoracion_pi_cod2

M = 3

set.seed(2, sample.kind = "Rounding")

rfFit3_Valoracion_pi_cod <- train(Valoracion_pi_cod ~ .,

                                  method = "rf",

                                  data = train2_Valoracion_pi_cod,

                                  preProcess = c("center", "scale"),

                                  tuneGrid = expand.grid(mtry = c(2:10)),

                                  trControl = ctrl)

rfFit3_Valoracion_pi_cod

varImp(rfFit3_Valoracion_pi_cod)

plot(varImp(rfFit3_Valoracion_pi_cod), top = 10, col = "#41AE76", main = "M3")

rfFit3_Valoracion_pi_cod$finalModel

pred3_Valoracion_pi_cod <- predict(rfFit3_Valoracion_pi_cod, test)

impu_Valoracion_pi_cod3 <- predict(rfFit3_Valoracion_pi_cod, impu_Valoracion_pi_cod)

table(pred3_Valoracion_pi_cod)

confusionMatrix(pred3_Valoracion_pi_cod[test$Valoracion_pi_cod!=99],test_Valoracion_pi_cod)

CM3_Valoracion_pi_cod <- confusionMatrix(pred3_Valoracion_pi_cod[test$Valoracion_pi_cod!=99],test_Valoracion_pi_cod)$table

AC3_Valoracion_pi_cod <- as.vector(confusionMatrix(pred3_Valoracion_pi_cod[test$Valoracion_pi_cod!=99],test_Valoracion_pi_cod)$overall[1])

M3[NA_Valoracion_pi_cod,"Valoracion_pi_cod"] <- pred3_Valoracion_pi_cod[pos]

M3[NA_Valoracion_pi_cod_impu,"Valoracion_pi_cod"] <- impu_Valoracion_pi_cod3

CMT_Valoracion_pi_cod <- (CM1_Valoracion_pi_cod)

for(i in 1:nrow(CMT_Valoracion_pi_cod))

{

  for(j in 1:ncol(CMT_Valoracion_pi_cod))

  {

    if((CM1_Valoracion_pi_cod[i,j]+CM2_Valoracion_pi_cod[i,j]+CM3_Valoracion_pi_cod[i,j])%%3 != 0)

    {

      CMT_Valoracion_pi_cod[i,j] = as.character(round((CM1_Valoracion_pi_cod[i,j]+CM2_Valoracion_pi_cod[i,j]+CM3_Valoracion_pi_cod[i,j])/3,2))

    }else{

      CMT_Valoracion_pi_cod[i,j] = as.character(as.integer((CM1_Valoracion_pi_cod[i,j]+CM2_Valoracion_pi_cod[i,j]+CM3_Valoracion_pi_cod[i,j])/3))

    }

  }

}

CMT_Valoracion_pi_cod = cbind(c(1:6), CMT_Valoracion_pi_cod)

kable(CMT_Valoracion_pi_cod, position = "center", booktabs = TRUE, align = "cccccc", caption = "<left><em> Matriz de confusión Valoración Pablo Iglesias </em></center>", escape = FALSE, col.names = c("Prediction", "1","2","3", "4", "5", "6"), position = "center", row_label_position = "c", font_size = 15)%>%

  kableExtra::footnote(symbol = c("Al tomar la media de los elementos de las matrices de confusión,  

            es posible que no se obtenga un número entero"), threeparttable=T)%>%

  kable_classic(full_width = F,  html_font = "Times New Roman")%>%

  add_header_above(c(" " = 1, "Reference" = 1, " " = 5))%>%

  column_spec(1:7, width = "1.2cm")

ACT_Valoracion_pi_cod <- c(AC1_Valoracion_pi_cod,AC2_Valoracion_pi_cod,AC3_Valoracion_pi_cod)

ACM_Valoracion_pi_cod <- mean(c(ACT_Valoracion_pi_cod))

ACSD_Valoracion_pi_cod <- sqrt(var(ACT_Valoracion_pi_cod)/3)

 

-        Imputación de la Simpatía partidista

# M = 1

train2_Simpatia_cod <- conjunto[conjunto[,"Simpatia_cod"]!="99",]

impu_Simpatia_cod <- conjunto[conjunto[,"Simpatia_cod"]=="99",]

dim(train2_Simpatia_cod)[1]

dim(impu_Simpatia_cod)[1]

table(train2_Simpatia_cod$Simpatia_cod)

train2_Simpatia_cod[,"Simpatia_cod"] <- droplevels(train2_Simpatia_cod[,"Simpatia_cod"])

table(train2_Simpatia_cod$Simpatia_cod)

ctrl <- trainControl(method = "cv", number = 5)

# RF train with CV to optimize number of variables

#library(doMC)

#registerDoMC(cores = 2)

set.seed(0, sample.kind = "Rounding")

rfFit_Simpatia_cod <- train(Simpatia_cod ~ .,

                            method = "rf",

                            data = train2_Simpatia_cod,

                            preProcess = c("center", "scale"),

                            tuneGrid = expand.grid(mtry = c(2:10)),

                            trControl = ctrl)

rfFit_Simpatia_cod

varImp(rfFit_Simpatia_cod)

plot(varImp(rfFit_Simpatia_cod), top = 10, col = "#74A9CF", main = "M1")

rfFit_Simpatia_cod$finalModel

pred_Simpatia_cod <- predict(rfFit_Simpatia_cod, test)

impu_Simpatia_cod1 <- predict(rfFit_Simpatia_cod, impu_Simpatia_cod)

table(pred_Simpatia_cod)

test_Simpatia_cod <- test$Simpatia_cod[test$Simpatia_cod!=99]

test_Simpatia_cod <- droplevels(test_Simpatia_cod)

confusionMatrix(pred_Simpatia_cod[test$Simpatia_cod!=99],test_Simpatia_cod)

CM1_Simpatia_cod <- confusionMatrix(pred_Simpatia_cod[test$Simpatia_cod!=99],test_Simpatia_cod)$table

AC1_Simpatia_cod <- as.vector(confusionMatrix(pred_Simpatia_cod[test$Simpatia_cod!=99],test_Simpatia_cod)$overall[1])

NA_Simpatia_cod <- as.numeric(rownames(test[test[,"Simpatia_cod"]=='99',]))

pos = c()

for(i in 1:nrow(test))

{

  if(test[i,"Simpatia_cod"]=="99")

  {

    pos=c(pos,i)

  }

}

NA_Simpatia_cod_impu <- as.numeric(rownames(impu_Simpatia_cod))

M1[NA_Simpatia_cod,"Simpatia_cod"] <- pred_Simpatia_cod[pos]

M1[NA_Simpatia_cod_impu,"Simpatia_cod"] <- impu_Simpatia_cod1

M = 2

set.seed(1, sample.kind = "Rounding")

rfFit2_Simpatia_cod <- train(Simpatia_cod ~ .,

                             method = "rf",

                             data = train2_Simpatia_cod,

                             preProcess = c("center", "scale"),

                             tuneGrid = expand.grid(mtry = c(2:10)),

                             trControl = ctrl)

rfFit2_Simpatia_cod

varImp(rfFit2_Simpatia_cod)

plot(varImp(rfFit2_Simpatia_cod), top = 10, col = "#0570B0", main = "M2")

rfFit2_Simpatia_cod$finalModel

pred2_Simpatia_cod <- predict(rfFit2_Simpatia_cod, test)

impu_Simpatia_cod2 <- predict(rfFit2_Simpatia_cod, impu_Simpatia_cod)

table(pred2_Simpatia_cod)

confusionMatrix(pred2_Simpatia_cod[test$Simpatia_cod!=99],test_Simpatia_cod)

CM2_Simpatia_cod <- confusionMatrix(pred2_Simpatia_cod[test$Simpatia_cod!=99],test_Simpatia_cod)$table

AC2_Simpatia_cod <- as.vector(confusionMatrix(pred2_Simpatia_cod[test$Simpatia_cod!=99],test_Simpatia_cod)$overall[1])

M2[NA_Simpatia_cod,"Simpatia_cod"] <- pred2_Simpatia_cod[pos]

M2[NA_Simpatia_cod_impu,"Simpatia_cod"] <- impu_Simpatia_cod2

M = 3

set.seed(2, sample.kind = "Rounding")

rfFit3_Simpatia_cod <- train(Simpatia_cod ~ .,

                             method = "rf",

                             data = train2_Simpatia_cod,

                             preProcess = c("center", "scale"),

                             tuneGrid = expand.grid(mtry = c(2:10)),

                             trControl = ctrl)

rfFit3_Simpatia_cod

varImp(rfFit3_Simpatia_cod)

plot(varImp(rfFit3_Simpatia_cod), top = 10, col = "#41AE76", main = "M3")

rfFit3_Simpatia_cod$finalModel

pred3_Simpatia_cod <- predict(rfFit3_Simpatia_cod, test)

impu_Simpatia_cod3 <- predict(rfFit3_Simpatia_cod, impu_Simpatia_cod)

table(pred3_Simpatia_cod)

confusionMatrix(pred3_Simpatia_cod[test$Simpatia_cod!=99],test_Simpatia_cod)

CM3_Simpatia_cod <- confusionMatrix(pred3_Simpatia_cod[test$Simpatia_cod!=99],test_Simpatia_cod)$table

AC3_Simpatia_cod <- as.vector(confusionMatrix(pred3_Simpatia_cod[test$Simpatia_cod!=99],test_Simpatia_cod)$overall[1])

M3[NA_Simpatia_cod,"Simpatia_cod"] <- pred3_Simpatia_cod[pos]

M3[NA_Simpatia_cod_impu,"Simpatia_cod"] <- impu_Simpatia_cod3

Matriz confusión

CMT_Simpatia_cod <- (CM1_Simpatia_cod)

for(i in 1:nrow(CMT_Simpatia_cod))

{

  for(j in 1:ncol(CMT_Simpatia_cod))

  {

    if((CM1_Simpatia_cod[i,j]+CM2_Simpatia_cod[i,j]+CM3_Simpatia_cod[i,j])%%3 != 0)

    {

      CMT_Simpatia_cod[i,j] = as.character(round((CM1_Simpatia_cod[i,j]+CM2_Simpatia_cod[i,j]+CM3_Simpatia_cod[i,j])/3,2))

    }else{

      CMT_Simpatia_cod[i,j] = as.character(as.integer((CM1_Simpatia_cod[i,j]+CM2_Simpatia_cod[i,j]+CM3_Simpatia_cod[i,j])/3))

    }

  }

}

CMT_Simpatia_cod = cbind(c(1:10), CMT_Simpatia_cod)

CM1_Simpatia_cod = cbind(c(1:10), CM1_Simpatia_cod)

CM2_Simpatia_cod = cbind(c(1:10), CM2_Simpatia_cod)

CM3_Simpatia_cod = cbind(c(1:10), CM3_Simpatia_cod)

kable(CMT_Simpatia_cod, position = "center", booktabs = TRUE, align = "cccccc", caption = "<left><em> Matriz de confusión Simpatía partidista </em></center>", escape = FALSE, col.names = c("Prediction", "1","2","3", "4", "5", "6", "7", "8", "9", "10"), table.attr = "style='width:30%;'")%>%

  kable_classic(full_width = F,  html_font = "Times New Roman")%>%

  kableExtra::footnote(symbol = c("Al tomar la media de los elementos de las matrices de confusión, es posible que no se obtenga un número entero"), threeparttable=T)%>%

  add_header_above(c(" " = 1, "Reference" = 1, " " = 9))%>%

  column_spec(1:11, width = "1.2cm")

kable(CM1_Simpatia_cod, position = "center", booktabs = TRUE, align = "cccccc", caption = "<left><em> Matriz de confusión Simpatía partidista 1ª imputación</em></center>", escape = FALSE, col.names = c("Prediction", "1","2","3", "4", "5", "6", "7", "8", "9", "10"), position = "center")%>%

  kable_classic(full_width = F,  html_font = "Times New Roman")%>%

  add_header_above(c(" " = 1, "Reference" = 1, " " = 9))%>%

  column_spec(1:11, width = "1.2cm")

kable(CM2_Simpatia_cod, position = "center", booktabs = TRUE, align = "cccccc", caption = "<left><em> Matriz de confusión Simpatía partidista 2ª imputación </em></center>", escape = FALSE, col.names = c("Prediction", "1","2","3", "4", "5", "6", "7", "8", "9", "10"), position = "center")%>%

  kable_classic(full_width = F,  html_font = "Times New Roman")%>%

  add_header_above(c(" " = 1, "Reference" = 1, " " = 9))%>%

  column_spec(1:11, width = "1.2cm")

kable(CM3_Simpatia_cod, position = "center", booktabs = TRUE, align = "cccccc", caption = "<leftr><em> Matriz de confusión Simpatía partidista 3ª imputación </em></center>", escape = FALSE, col.names = c("Prediction", "1","2","3", "4", "5", "6", "7", "8", "9", "10"), position = "center")%>%

  kable_classic(full_width = F,  html_font = "Times New Roman")%>%

  add_header_above(c(" " = 1, "Reference" = 1, " " = 9))%>%

  column_spec(1:11, width = "1.2cm")

ACT_Simpatia_cod <- c(AC1_Simpatia_cod,AC2_Simpatia_cod,AC3_Simpatia_cod)

ACM_Simpatia_cod <- mean(c(ACT_Simpatia_cod))

ACSD_Simpatia_cod <- sqrt(var(ACT_Simpatia_cod)/3)

 

-        Imputación de la valoración de Pablo Casado

# M = 1

train2_Valoracion_pc_cod <- conjunto[conjunto[,"Valoracion_pc_cod"]!="99",]

impu_Valoracion_pc_cod <- conjunto[conjunto[,"Valoracion_pc_cod"]=="99",]

dim(train2_Valoracion_pc_cod)[1]

dim(impu_Valoracion_pc_cod)[1]

table(train2_Valoracion_pc_cod$Valoracion_pc_cod)

train2_Valoracion_pc_cod[,"Valoracion_pc_cod"] <- droplevels(train2_Valoracion_pc_cod[,"Valoracion_pc_cod"])

table(train2_Valoracion_pc_cod$Valoracion_pc_cod)

ctrl <- trainControl(method = "cv", number = 5)

# RF train with CV to optimize number of variables

#library(doMC)

#registerDoMC(cores = 2)

set.seed(0, sample.kind = "Rounding")

rfFit_Valoracion_pc_cod <- train(Valoracion_pc_cod ~ .,

                                 method = "rf",

                                 data = train2_Valoracion_pc_cod,

                                 preProcess = c("center", "scale"),

                                 tuneGrid = expand.grid(mtry = c(2:10)),

                                 trControl = ctrl)

rfFit_Valoracion_pc_cod

varImp(rfFit_Valoracion_pc_cod)

plot(varImp(rfFit_Valoracion_pc_cod), top = 10, col = "#74A9CF", main = "M1")

rfFit_Valoracion_pc_cod$finalModel

pred_Valoracion_pc_cod <- predict(rfFit_Valoracion_pc_cod, test)

impu_Valoracion_pc_cod1 <- predict(rfFit_Valoracion_pc_cod, impu_Valoracion_pc_cod)

table(pred_Valoracion_pc_cod)

test_Valoracion_pc_cod <- test$Valoracion_pc_cod[test$Valoracion_pc_cod!=99]

test_Valoracion_pc_cod <- droplevels(test_Valoracion_pc_cod)

confusionMatrix(pred_Valoracion_pc_cod[test$Valoracion_pc_cod!=99],test_Valoracion_pc_cod)

CM1_Valoracion_pc_cod <- confusionMatrix(pred_Valoracion_pc_cod[test$Valoracion_pc_cod!=99],test_Valoracion_pc_cod)$table

AC1_Valoracion_pc_cod<- as.vector(confusionMatrix(pred_Valoracion_pc_cod[test$Valoracion_pc_cod!=99],test_Valoracion_pc_cod)$overall[1])

NA_Valoracion_pc_cod <- as.numeric(rownames(test[test[,"Valoracion_pc_cod"]=='99',]))

pos = c()

for(i in 1:nrow(test))

{

  if(test[i,"Valoracion_pc_cod"]=="99")

  {

    pos=c(pos,i)

  }

}

NA_Valoracion_pc_cod_impu <- as.numeric(rownames(impu_Valoracion_pc_cod))

M1[NA_Valoracion_pc_cod,"Valoracion_pc_cod"] <- pred_Valoracion_pc_cod[pos]

M1[NA_Valoracion_pc_cod_impu,"Valoracion_pc_cod"] <- impu_Valoracion_pc_cod1

M = 2

set.seed(1, sample.kind = "Rounding")

rfFit2_Valoracion_pc_cod <- train(Valoracion_pc_cod ~ .,

                                  method = "rf",

                                  data = train2_Valoracion_pc_cod,

                                  preProcess = c("center", "scale"),

                                  tuneGrid = expand.grid(mtry = c(2:10)),

                                  trControl = ctrl)

rfFit2_Valoracion_pc_cod

varImp(rfFit2_Valoracion_pc_cod)

plot(varImp(rfFit2_Valoracion_pc_cod), top = 10, col = "#0570B0", main = "M2")

rfFit2_Valoracion_pc_cod$finalModel

pred2_Valoracion_pc_cod <- predict(rfFit2_Valoracion_pc_cod, test)

impu_Valoracion_pc_cod2 <- predict(rfFit2_Valoracion_pc_cod, impu_Valoracion_pc_cod)

table(pred2_Valoracion_pc_cod)

confusionMatrix(pred2_Valoracion_pc_cod[test$Valoracion_pc_cod!=99],test_Valoracion_pc_cod)

CM2_Valoracion_pc_cod <- confusionMatrix(pred2_Valoracion_pc_cod[test$Valoracion_pc_cod!=99],test_Valoracion_pc_cod)$table

AC2_Valoracion_pc_cod<- as.vector(confusionMatrix(pred2_Valoracion_pc_cod[test$Valoracion_pc_cod!=99],test_Valoracion_pc_cod)$overall[1])

M2[NA_Valoracion_pc_cod,"Valoracion_pc_cod"] <- pred2_Valoracion_pc_cod[pos]

M2[NA_Valoracion_pc_cod_impu,"Valoracion_pc_cod"] <- impu_Valoracion_pc_cod2

M = 3

set.seed(2, sample.kind = "Rounding")

rfFit3_Valoracion_pc_cod <- train(Valoracion_pc_cod ~ .,

                                  method = "rf",

                                  data = train2_Valoracion_pc_cod,

                                  preProcess = c("center", "scale"),

                                  tuneGrid = expand.grid(mtry = c(2:10)),

                                  trControl = ctrl)

rfFit3_Valoracion_pc_cod

varImp(rfFit3_Valoracion_pc_cod)

plot(varImp(rfFit3_Valoracion_pc_cod), top = 10, col = "#41AE76", main = "M3")

rfFit3_Valoracion_pc_cod$finalModel

pred3_Valoracion_pc_cod <- predict(rfFit3_Valoracion_pc_cod, test)

impu_Valoracion_pc_cod3 <- predict(rfFit3_Valoracion_pc_cod, impu_Valoracion_pc_cod)

table(pred3_Valoracion_pc_cod)

confusionMatrix(pred3_Valoracion_pc_cod[test$Valoracion_pc_cod!=99],test_Valoracion_pc_cod)

CM3_Valoracion_pc_cod <- confusionMatrix(pred3_Valoracion_pc_cod[test$Valoracion_pc_cod!=99],test_Valoracion_pc_cod)$table

AC3_Valoracion_pc_cod<- as.vector(confusionMatrix(pred3_Valoracion_pc_cod[test$Valoracion_pc_cod!=99],test_Valoracion_pc_cod)$overall[1])

M3[NA_Valoracion_pc_cod,"Valoracion_pc_cod"] <- pred3_Valoracion_pc_cod[pos]

M3[NA_Valoracion_pc_cod_impu,"Valoracion_pc_cod"] <- impu_Valoracion_pc_cod3

Matriz Confusión

CMT_Valoracion_pc_cod <- (CM1_Valoracion_pc_cod)

for(i in 1:nrow(CMT_Valoracion_pc_cod))

{

  for(j in 1:ncol(CMT_Valoracion_pc_cod))

  {

    if((CM1_Valoracion_pc_cod[i,j]+CM2_Valoracion_pc_cod[i,j]+CM3_Valoracion_pc_cod[i,j])%%3 != 0)

    {

      CMT_Valoracion_pc_cod[i,j] = as.character(round((CM1_Valoracion_pc_cod[i,j]+CM2_Valoracion_pc_cod[i,j]+CM3_Valoracion_pc_cod[i,j])/3,2))

    }else{

      CMT_Valoracion_pc_cod[i,j] = as.character(as.integer((CM1_Valoracion_pc_cod[i,j]+CM2_Valoracion_pc_cod[i,j]+CM3_Valoracion_pc_cod[i,j])/3))

    }

  }

}

CMT_Valoracion_pc_cod = cbind(c(1:6), CMT_Valoracion_pc_cod)

kable(CMT_Valoracion_pc_cod, position = "center", booktabs = TRUE, align = "cccccc", caption = "<left><em> Matriz de confusión Valoración Pablo Casado </em></center>", escape = FALSE, col.names = c("Prediction", "1","2","3", "4", "5", "6"))%>%

  kableExtra::footnote(symbol = c("Al tomar la media de los elementos de las matrices de confusión,  

            es posible que no se obtenga un número entero"), threeparttable=T)%>%

  kable_classic(full_width = F,  html_font = "Times New Roman")%>%

  add_header_above(c(" " = 1, "Reference" = 1, " " = 5))%>%

  column_spec(1:7, width = "1.2cm")

ACT_Valoracion_pc_cod <- c(AC1_Valoracion_pc_cod,AC2_Valoracion_pc_cod,AC3_Valoracion_pc_cod)

ACM_Valoracion_pc_cod <- mean(c(ACT_Valoracion_pc_cod))

ACSD_Valoracion_pc_cod <- sqrt(var(ACT_Valoracion_pc_cod)/3)

 

-        Imputación de la valoración de Santiago Abascal

# M = 1

train2_Valoracion_sa_cod <- conjunto[conjunto[,"Valoracion_sa_cod"]!="99",]

impu_Valoracion_sa_cod <- conjunto[conjunto[,"Valoracion_sa_cod"]=="99",]

dim(train2_Valoracion_sa_cod)[1]

dim(impu_Valoracion_sa_cod)[1]

table(train2_Valoracion_sa_cod$Valoracion_sa_cod)

train2_Valoracion_sa_cod[,"Valoracion_sa_cod"] <- droplevels(train2_Valoracion_sa_cod[,"Valoracion_sa_cod"])

table(train2_Valoracion_sa_cod$Valoracion_sa_cod)

ctrl <- trainControl(method = "cv", number = 5)

# RF train with CV to optimize number of variables

#library(doMC)

#registerDoMC(cores = 2)

set.seed(0, sample.kind = "Rounding")

rfFit_Valoracion_sa_cod <- train(Valoracion_sa_cod ~ .,

                                 method = "rf",

                                 data = train2_Valoracion_sa_cod,

                                 preProcess = c("center", "scale"),

                                 tuneGrid = expand.grid(mtry = c(2:10)),

                                 trControl = ctrl)

rfFit_Valoracion_sa_cod

varImp(rfFit_Valoracion_sa_cod)

plot(varImp(rfFit_Valoracion_sa_cod), top = 10, col = "#74A9CF", main = "M1")

rfFit_Valoracion_sa_cod$finalModel

pred_Valoracion_sa_cod <- predict(rfFit_Valoracion_sa_cod, test)

impu_Valoracion_sa_cod1 <- predict(rfFit_Valoracion_sa_cod, impu_Valoracion_sa_cod)

table(pred_Valoracion_sa_cod)

test_Valoracion_sa_cod <- test$Valoracion_sa_cod[test$Valoracion_sa_cod!=99]

test_Valoracion_sa_cod <- droplevels(test_Valoracion_sa_cod)

confusionMatrix(pred_Valoracion_sa_cod[test$Valoracion_sa_cod!=99],test_Valoracion_sa_cod)

CM1_Valoracion_sa_cod <- confusionMatrix(pred_Valoracion_sa_cod[test$Valoracion_sa_cod!=99],test_Valoracion_sa_cod)$table

AC1_Valoracion_sa_cod<- as.vector(confusionMatrix(pred_Valoracion_sa_cod[test$Valoracion_sa_cod!=99],test_Valoracion_sa_cod)$overall[1])

NA_Valoracion_sa_cod <- as.numeric(rownames(test[test[,"Valoracion_sa_cod"]=='99',]))

pos = c()

for(i in 1:nrow(test))

{

  if(test[i,"Valoracion_sa_cod"]=="99")

  {

    pos=c(pos,i)

  }

}

NA_Valoracion_sa_cod_impu <- as.numeric(rownames(impu_Valoracion_sa_cod))

M1[NA_Valoracion_sa_cod,"Valoracion_sa_cod"] <- pred_Valoracion_sa_cod[pos]

M1[NA_Valoracion_sa_cod_impu,"Valoracion_sa_cod"] <- impu_Valoracion_sa_cod1

M = 2

set.seed(1, sample.kind = "Rounding")

rfFit2_Valoracion_sa_cod <- train(Valoracion_sa_cod ~ .,

                                  method = "rf",

                                  data = train2_Valoracion_sa_cod,

                                  preProcess = c("center", "scale"),

                                  tuneGrid = expand.grid(mtry = c(2:10)),

                                  trControl = ctrl)

rfFit2_Valoracion_sa_cod

varImp(rfFit2_Valoracion_sa_cod)

plot(varImp(rfFit2_Valoracion_sa_cod), top = 10, col = "#0570B0", main = "M2")

rfFit2_Valoracion_sa_cod$finalModel

pred2_Valoracion_sa_cod <- predict(rfFit2_Valoracion_sa_cod, test)

impu_Valoracion_sa_cod2 <- predict(rfFit2_Valoracion_sa_cod, impu_Valoracion_sa_cod)

table(pred2_Valoracion_sa_cod)

confusionMatrix(pred2_Valoracion_sa_cod[test$Valoracion_sa_cod!=99],test_Valoracion_sa_cod)

CM2_Valoracion_sa_cod <- confusionMatrix(pred2_Valoracion_sa_cod[test$Valoracion_sa_cod!=99],test_Valoracion_sa_cod)$table

AC2_Valoracion_sa_cod<- as.vector(confusionMatrix(pred2_Valoracion_sa_cod[test$Valoracion_sa_cod!=99],test_Valoracion_sa_cod)$overall[1])

M2[NA_Valoracion_sa_cod,"Valoracion_sa_cod"] <- pred2_Valoracion_sa_cod[pos]

M2[NA_Valoracion_sa_cod_impu,"Valoracion_sa_cod"] <- impu_Valoracion_sa_cod2

M = 3

set.seed(2, sample.kind = "Rounding")

rfFit3_Valoracion_sa_cod <- train(Valoracion_sa_cod ~ .,

                                  method = "rf",

                                  data = train2_Valoracion_sa_cod,

                                  preProcess = c("center", "scale"),

                                  tuneGrid = expand.grid(mtry = c(2:10)),

                                  trControl = ctrl)

rfFit3_Valoracion_sa_cod

varImp(rfFit3_Valoracion_sa_cod)

plot(varImp(rfFit3_Valoracion_sa_cod), top = 10, col = "#41AE76", main = "M3")

rfFit3_Valoracion_sa_cod$finalModel

pred3_Valoracion_sa_cod <- predict(rfFit3_Valoracion_sa_cod, test)

impu_Valoracion_sa_cod3 <- predict(rfFit3_Valoracion_sa_cod, impu_Valoracion_sa_cod)

table(pred3_Valoracion_sa_cod)

confusionMatrix(pred3_Valoracion_sa_cod[test$Valoracion_sa_cod!=99],test_Valoracion_sa_cod)

CM3_Valoracion_sa_cod <- confusionMatrix(pred3_Valoracion_sa_cod[test$Valoracion_sa_cod!=99],test_Valoracion_sa_cod)$table

AC3_Valoracion_sa_cod<- as.vector(confusionMatrix(pred3_Valoracion_sa_cod[test$Valoracion_sa_cod!=99],test_Valoracion_sa_cod)$overall[1])

M3[NA_Valoracion_sa_cod,"Valoracion_sa_cod"] <- pred3_Valoracion_sa_cod[pos]

M3[NA_Valoracion_sa_cod_impu,"Valoracion_sa_cod"] <- impu_Valoracion_sa_cod3

CMT_Valoracion_sa_cod <- (CM1_Valoracion_sa_cod)

for(i in 1:nrow(CMT_Valoracion_sa_cod))

{

  for(j in 1:ncol(CMT_Valoracion_sa_cod))

  {

    if((CM1_Valoracion_sa_cod[i,j]+CM2_Valoracion_sa_cod[i,j]+CM3_Valoracion_sa_cod[i,j])%%3 != 0)

    {

      CMT_Valoracion_sa_cod[i,j] = as.character(round((CM1_Valoracion_sa_cod[i,j]+CM2_Valoracion_sa_cod[i,j]+CM3_Valoracion_sa_cod[i,j])/3,2))

    }else{

      CMT_Valoracion_sa_cod[i,j] = as.character(as.integer((CM1_Valoracion_sa_cod[i,j]+CM2_Valoracion_sa_cod[i,j]+CM3_Valoracion_sa_cod[i,j])/3))

    }

  }

}

CMT_Valoracion_sa_cod = cbind(c(1:6), CMT_Valoracion_sa_cod)

kable(CMT_Valoracion_sa_cod, position = "center", booktabs = TRUE, align = "cccccc", caption = "<left><em> Matriz de confusión Valoración Santiago Abascal </em></center>", escape = FALSE, col.names = c("Prediction", "1","2","3", "4", "5", "6"))%>%

  kableExtra::footnote(symbol = c("Al tomar la media de los elementos de las matrices de confusión,  

            es posible que no se obtenga un número entero"), threeparttable=T)%>%

  kable_classic(full_width = F,  html_font = "Times New Roman")%>%

  add_header_above(c(" " = 1, "Reference" = 1, " " = 5))%>%

  column_spec(1:7, width = "1.2cm")

ACT_Valoracion_sa_cod <- c(AC1_Valoracion_sa_cod,AC2_Valoracion_sa_cod,AC3_Valoracion_sa_cod)

ACM_Valoracion_sa_cod <- mean(c(ACT_Valoracion_sa_cod))

ACSD_Valoracion_sa_cod <- sqrt(var(ACT_Valoracion_sa_cod)/3)

 

-        Imputación de la valoración de Inés Arrimadas

# M = 1

train2_Valoracion_ia_cod <- conjunto[conjunto[,"Valoracion_ia_cod"]!="99",]

impu_Valoracion_ia_cod <- conjunto[conjunto[,"Valoracion_ia_cod"]=="99",]

dim(train2_Valoracion_ia_cod)[1]

dim(impu_Valoracion_ia_cod)[1]

table(train2_Valoracion_ia_cod$Valoracion_ia_cod)

train2_Valoracion_ia_cod[,"Valoracion_ia_cod"] <- droplevels(train2_Valoracion_ia_cod[,"Valoracion_ia_cod"])

table(train2_Valoracion_ia_cod$Valoracion_ia_cod)

ctrl <- trainControl(method = "cv", number = 5)

# RF train with CV to optimize number of variables

#library(doMC)

#registerDoMC(cores = 2)

set.seed(0, sample.kind = "Rounding")

rfFit_Valoracion_ia_cod <- train(Valoracion_ia_cod ~ .,

                                 method = "rf",

                                 data = train2_Valoracion_ia_cod,

                                 preProcess = c("center", "scale"),

                                 tuneGrid = expand.grid(mtry = c(2:10)),

                                 trControl = ctrl)

rfFit_Valoracion_ia_cod

varImp(rfFit_Valoracion_ia_cod)

plot(varImp(rfFit_Valoracion_ia_cod), top = 10, col = "#74A9CF", main = "M1")

rfFit_Valoracion_ia_cod$finalModel

pred_Valoracion_ia_cod <- predict(rfFit_Valoracion_ia_cod, test)

impu_Valoracion_ia_cod1 <- predict(rfFit_Valoracion_ia_cod, impu_Valoracion_ia_cod)

table(pred_Valoracion_ia_cod)

test_Valoracion_ia_cod <- test$Valoracion_ia_cod[test$Valoracion_ia_cod!=99]

test_Valoracion_ia_cod <- droplevels(test_Valoracion_ia_cod)

confusionMatrix(pred_Valoracion_ia_cod[test$Valoracion_ia_cod!=99],test_Valoracion_ia_cod)

CM1_Valoracion_ia_cod <- confusionMatrix(pred_Valoracion_ia_cod[test$Valoracion_ia_cod!=99],test_Valoracion_ia_cod)$table

AC1_Valoracion_ia_cod<- as.vector(confusionMatrix(pred_Valoracion_ia_cod[test$Valoracion_ia_cod!=99],test_Valoracion_ia_cod)$overall[1])

NA_Valoracion_ia_cod <- as.numeric(rownames(test[test[,"Valoracion_ia_cod"]=='99',]))

pos = c()

for(i in 1:nrow(test))

{

  if(test[i,"Valoracion_ia_cod"]=="99")

  {

    pos=c(pos,i)

  }

}

 

NA_Valoracion_ia_cod_impu <- as.numeric(rownames(impu_Valoracion_ia_cod))

M1[NA_Valoracion_ia_cod,"Valoracion_ia_cod"] <- pred_Valoracion_ia_cod[pos]

M1[NA_Valoracion_ia_cod_impu,"Valoracion_ia_cod"] <- impu_Valoracion_ia_cod1

M = 2

set.seed(1, sample.kind = "Rounding")

rfFit2_Valoracion_ia_cod <- train(Valoracion_ia_cod ~ .,

                                  method = "rf",

                                  data = train2_Valoracion_ia_cod,

                                  preProcess = c("center", "scale"),

                                  tuneGrid = expand.grid(mtry = c(2:10)),

                                  trControl = ctrl)

rfFit2_Valoracion_ia_cod

varImp(rfFit2_Valoracion_ia_cod)

plot(varImp(rfFit2_Valoracion_ia_cod), top = 10, col = "#0570B0", main = "M2")

rfFit2_Valoracion_ia_cod$finalModel

pred2_Valoracion_ia_cod <- predict(rfFit2_Valoracion_ia_cod, test)

impu_Valoracion_ia_cod2 <- predict(rfFit2_Valoracion_ia_cod, impu_Valoracion_ia_cod)

table(pred2_Valoracion_ia_cod)

confusionMatrix(pred2_Valoracion_ia_cod[test$Valoracion_ia_cod!=99],test_Valoracion_ia_cod)

CM2_Valoracion_ia_cod <- confusionMatrix(pred2_Valoracion_ia_cod[test$Valoracion_ia_cod!=99],test_Valoracion_ia_cod)$table

AC2_Valoracion_ia_cod<- as.vector(confusionMatrix(pred2_Valoracion_ia_cod[test$Valoracion_ia_cod!=99],test_Valoracion_ia_cod)$overall[1])

M2[NA_Valoracion_ia_cod,"Valoracion_ia_cod"] <- pred2_Valoracion_ia_cod[pos]

M2[NA_Valoracion_ia_cod_impu,"Valoracion_ia_cod"] <- impu_Valoracion_ia_cod2

M = 3

set.seed(2, sample.kind = "Rounding")

rfFit3_Valoracion_ia_cod <- train(Valoracion_ia_cod ~ .,

                                  method = "rf",

                                  data = train2_Valoracion_ia_cod,

                                  preProcess = c("center", "scale"),

                                  tuneGrid = expand.grid(mtry = c(2:10)),

                                  trControl = ctrl)

rfFit3_Valoracion_ia_cod

varImp(rfFit3_Valoracion_ia_cod)

plot(varImp(rfFit3_Valoracion_ia_cod), top = 10, col = "#41AE76", main = "M3")

rfFit3_Valoracion_ia_cod$finalModel

pred3_Valoracion_ia_cod <- predict(rfFit3_Valoracion_ia_cod, test)

impu_Valoracion_ia_cod3 <- predict(rfFit3_Valoracion_ia_cod, impu_Valoracion_ia_cod)

table(pred3_Valoracion_ia_cod)

confusionMatrix(pred3_Valoracion_ia_cod[test$Valoracion_ia_cod!=99],test_Valoracion_ia_cod)

CM3_Valoracion_ia_cod <- confusionMatrix(pred3_Valoracion_ia_cod[test$Valoracion_ia_cod!=99],test_Valoracion_ia_cod)$table

AC3_Valoracion_ia_cod<- as.vector(confusionMatrix(pred3_Valoracion_ia_cod[test$Valoracion_ia_cod!=99],test_Valoracion_ia_cod)$overall[1])

M3[NA_Valoracion_ia_cod,"Valoracion_ia_cod"] <- pred3_Valoracion_ia_cod[pos]

M3[NA_Valoracion_ia_cod_impu,"Valoracion_ia_cod"] <- impu_Valoracion_ia_cod3

CMT_Valoracion_ia_cod <- (CM1_Valoracion_ia_cod)

for(i in 1:nrow(CMT_Valoracion_ia_cod))

{

  for(j in 1:ncol(CMT_Valoracion_ia_cod))

  {

    if((CM1_Valoracion_ia_cod[i,j]+CM2_Valoracion_ia_cod[i,j]+CM3_Valoracion_ia_cod[i,j])%%3 != 0)

    {

      CMT_Valoracion_ia_cod[i,j] = as.character(round((CM1_Valoracion_ia_cod[i,j]+CM2_Valoracion_ia_cod[i,j]+CM3_Valoracion_ia_cod[i,j])/3,2))

    }else{

      CMT_Valoracion_ia_cod[i,j] = as.character(as.integer((CM1_Valoracion_ia_cod[i,j]+CM2_Valoracion_ia_cod[i,j]+CM3_Valoracion_ia_cod[i,j])/3))

    }

  }

}

CMT_Valoracion_ia_cod = cbind(c(1:6), CMT_Valoracion_ia_cod)

kable(CMT_Valoracion_ia_cod, position = "center", booktabs = TRUE, align = "cccccc", caption = "<left><em> Matriz de confusión Valoración Inés Arrimadas </em></center>", escape = FALSE, col.names = c("Prediction", "1","2","3", "4", "5", "6"),position = "center", row_label_position = "c", font_size = 15)%>%

  kableExtra::footnote(symbol = c("Al tomar la media de los elementos de las matrices de confusión,  

            es posible que no se obtenga un número entero"), threeparttable=T)%>%

  kable_classic(full_width = F,  html_font = "Times New Roman")%>%

  add_header_above(c(" " = 1, "Reference" = 1, " " = 5))%>%

  column_spec(1:7, width = "1.2cm")

ACT_Valoracion_ia_cod <- c(AC1_Valoracion_ia_cod,AC2_Valoracion_ia_cod,AC3_Valoracion_ia_cod)

ACM_Valoracion_ia_cod <- mean(c(ACT_Valoracion_ia_cod))

ACSD_Valoracion_ia_cod <- sqrt(var(ACT_Valoracion_ia_cod)/3)

 

-        Imputación de la cercanía partidista

# M = 1

train2_Cercania_cod <- conjunto[conjunto[,"Cercania_cod"]!="99",]

impu_Cercania_cod <- conjunto[conjunto[,"Cercania_cod"]=="99",]

dim(train2_Cercania_cod)[1]

dim(impu_Cercania_cod)[1]

table(train2_Cercania_cod$Cercania_cod)

train2_Cercania_cod[,"Cercania_cod"] <- droplevels(train2_Cercania_cod[,"Cercania_cod"])

table(train2_Cercania_cod$Cercania_cod)

ctrl <- trainControl(method = "cv", number = 5)

# RF train with CV to optimize number of variables

#library(doMC)

#registerDoMC(cores = 2)

set.seed(0, sample.kind = "Rounding")

rfFit_Cercania_cod <- train(Cercania_cod ~ .,

                            method = "rf",

                            data = train2_Cercania_cod,

                            preProcess = c("center", "scale"),

                            tuneGrid = expand.grid(mtry = c(2:10)),

                            trControl = ctrl)

rfFit_Cercania_cod

varImp(rfFit_Cercania_cod)

plot(varImp(rfFit_Cercania_cod), top = 10, col = "#74A9CF", main = "M1")

rfFit_Cercania_cod$finalModel

pred_Cercania_cod <- predict(rfFit_Cercania_cod, test)

impu_Cercania_cod1 <- predict(rfFit_Cercania_cod, impu_Cercania_cod)

table(pred_Cercania_cod)

test_Cercania_cod <- test$Cercania_cod[test$Cercania_cod!=99]

test_Cercania_cod <- droplevels(test_Cercania_cod)

confusionMatrix(pred_Cercania_cod[test$Cercania_cod!=99],test_Cercania_cod)

CM1_Cercania_cod <- confusionMatrix(pred_Cercania_cod[test$Cercania_cod!=99],test_Cercania_cod)$table

AC1_Cercania_cod<- as.vector(confusionMatrix(pred_Cercania_cod[test$Cercania_cod!=99],test_Cercania_cod)$overall[1])

NA_Cercania_cod <- as.numeric(rownames(test[test[,"Cercania_cod"]=='99',]))

pos = c()

for(i in 1:nrow(test))

{

  if(test[i,"Cercania_cod"]=="99")

  {

    pos=c(pos,i)

  }

}

NA_Cercania_cod_impu <- as.numeric(rownames(impu_Cercania_cod))

M1[NA_Cercania_cod,"Cercania_cod"] <- pred_Cercania_cod[pos]

M1[NA_Cercania_cod_impu,"Cercania_cod"] <- impu_Cercania_cod1

M = 2

set.seed(1, sample.kind = "Rounding")

rfFit2_Cercania_cod <- train(Cercania_cod ~ .,

                             method = "rf",

                             data = train2_Cercania_cod,

                             preProcess = c("center", "scale"),

                             tuneGrid = expand.grid(mtry = c(2:10)),

                             trControl = ctrl)

rfFit2_Cercania_cod

varImp(rfFit2_Cercania_cod)

plot(varImp(rfFit2_Cercania_cod), top = 10, col = "#0570B0", main = "M2")

rfFit2_Cercania_cod$finalModel

pred2_Cercania_cod <- predict(rfFit2_Cercania_cod, test)

impu_Cercania_cod2 <- predict(rfFit2_Cercania_cod, impu_Cercania_cod)

table(pred2_Cercania_cod)

confusionMatrix(pred2_Cercania_cod[test$Cercania_cod!=99],test_Cercania_cod)

CM2_Cercania_cod <- confusionMatrix(pred2_Cercania_cod[test$Cercania_cod!=99],test_Cercania_cod)$table

AC2_Cercania_cod<- as.vector(confusionMatrix(pred2_Cercania_cod[test$Cercania_cod!=99],test_Cercania_cod)$overall[1])

M2[NA_Cercania_cod,"Cercania_cod"] <- pred2_Cercania_cod[pos]

M2[NA_Cercania_cod_impu,"Cercania_cod"] <- impu_Cercania_cod2

M = 3

set.seed(2, sample.kind = "Rounding")

rfFit3_Cercania_cod <- train(Cercania_cod ~ .,

                             method = "rf",

                             data = train2_Cercania_cod,

                             preProcess = c("center", "scale"),

                             tuneGrid = expand.grid(mtry = c(2:10)),

                             trControl = ctrl)

rfFit3_Cercania_cod

varImp(rfFit3_Cercania_cod)

plot(varImp(rfFit3_Cercania_cod), top = 10, col = "#41AE76", main = "M3")

rfFit3_Cercania_cod$finalModel

pred3_Cercania_cod <- predict(rfFit3_Cercania_cod, test)

impu_Cercania_cod3 <- predict(rfFit3_Cercania_cod, impu_Cercania_cod)

table(pred3_Cercania_cod)

confusionMatrix(pred3_Cercania_cod[test$Cercania_cod!=99],test_Cercania_cod)

CM3_Cercania_cod <- confusionMatrix(pred3_Cercania_cod[test$Cercania_cod!=99],test_Cercania_cod)$table

AC3_Cercania_cod<- as.vector(confusionMatrix(pred3_Cercania_cod[test$Cercania_cod!=99],test_Cercania_cod)$overall[1])

M3[NA_Cercania_cod,"Cercania_cod"] <- pred3_Cercania_cod[pos]

M3[NA_Cercania_cod_impu,"Cercania_cod"] <- impu_Cercania_cod3

Matriz Confusión

CMT_Cercania_cod <- (CM1_Cercania_cod)

for(i in 1:nrow(CMT_Cercania_cod))

{

  for(j in 1:ncol(CMT_Cercania_cod))

  {

    if((CM1_Cercania_cod[i,j]+CM2_Cercania_cod[i,j]+CM3_Cercania_cod[i,j])%%3 != 0)

    {

      CMT_Cercania_cod[i,j] = as.character(round((CM1_Cercania_cod[i,j]+CM2_Cercania_cod[i,j]+CM3_Cercania_cod[i,j])/3,2))

    }else{

      CMT_Cercania_cod[i,j] = as.character(as.integer((CM1_Cercania_cod[i,j]+CM2_Cercania_cod[i,j]+CM3_Cercania_cod[i,j])/3))

    }

  }

}

CMT_Cercania_cod = cbind(c(1:10), CMT_Cercania_cod)

kable(CMT_Cercania_cod, position = "center", booktabs = TRUE, align = "cccccc", caption = "<left><em> Matriz de confusión Cercanía partidista </em></center>", escape = FALSE, col.names = c("Prediction", "1","2","3", "4", "5", "6", "7", "8", "9", "10"),position = "center", row_label_position = "c", font_size = 15 )%>%

  kableExtra::footnote(symbol = c("Al tomar la media de los elementos de las matrices de confusión,  

            es posible que no se obtenga un número entero"), threeparttable=T)%>%

  kable_classic(full_width = F,  html_font = "Times New Roman")%>%

  add_header_above(c(" " = 1, "Reference" = 1, " " = 9))%>%

  column_spec(1:11, width = "1.2cm")

ACT_Cercania_cod <- c(AC1_Cercania_cod,AC2_Cercania_cod,AC3_Cercania_cod)

ACM_Cercania_cod <- mean(c(ACT_Cercania_cod))

ACSD_Cercania_cod <- sqrt(var(ACT_Cercania_cod)/3)

 

-        Imputación de la preferencia de presidente

# M = 1

train2_Pref_presi_cod <- conjunto[conjunto[,"Pref_presi_cod"]!="99",]

impu_Pref_presi_cod <- conjunto[conjunto[,"Pref_presi_cod"]=="99",]

dim(train2_Pref_presi_cod)[1]

dim(impu_Pref_presi_cod)[1]

table(train2_Pref_presi_cod$Pref_presi_cod)

train2_Pref_presi_cod[,"Pref_presi_cod"] <- droplevels(train2_Pref_presi_cod[,"Pref_presi_cod"])

table(train2_Pref_presi_cod$Pref_presi_cod)

ctrl <- trainControl(method = "cv", number = 5)

# RF train with CV to optimize number of variables

#library(doMC)

#registerDoMC(cores = 2)

set.seed(0, sample.kind = "Rounding")

rfFit_Pref_presi_cod <- train(Pref_presi_cod ~ .,

                              method = "rf",

                              data = train2_Pref_presi_cod,

                              preProcess = c("center", "scale"),

                              tuneGrid = expand.grid(mtry = c(2:10)),

                              trControl = ctrl)

rfFit_Pref_presi_cod

varImp(rfFit_Pref_presi_cod)

plot(varImp(rfFit_Pref_presi_cod), top = 10, col = "#74A9CF", main = "M1")

rfFit_Pref_presi_cod$finalModel

pred_Pref_presi_cod <- predict(rfFit_Pref_presi_cod, test)

impu_Pref_presi_cod1 <- predict(rfFit_Pref_presi_cod, impu_Pref_presi_cod)

table(pred_Pref_presi_cod)

test_Pref_presi_cod <- test$Pref_presi_cod[test$Pref_presi_cod!=99]

test_Pref_presi_cod <- droplevels(test_Pref_presi_cod)

confusionMatrix(pred_Pref_presi_cod[test$Pref_presi_cod!=99],test_Pref_presi_cod)

CM1_Pref_presi_cod <- confusionMatrix(pred_Pref_presi_cod[test$Pref_presi_cod!=99],test_Pref_presi_cod)$table

AC1_Pref_presi_cod<- as.vector(confusionMatrix(pred_Pref_presi_cod[test$Pref_presi_cod!=99],test_Pref_presi_cod)$overall[1])

NA_Pref_presi_cod <- as.numeric(rownames(test[test[,"Pref_presi_cod"]=='99',]))

pos = c()

for(i in 1:nrow(test))

{

  if(test[i,"Pref_presi_cod"]=="99")

  {

    pos=c(pos,i)

  }

}

NA_Pref_presi_cod_impu <- as.numeric(rownames(impu_Pref_presi_cod))

M1[NA_Pref_presi_cod,"Pref_presi_cod"] <- pred_Pref_presi_cod[pos]

M1[NA_Pref_presi_cod_impu,"Pref_presi_cod"] <- impu_Pref_presi_cod1

M = 2

set.seed(1, sample.kind = "Rounding")

rfFit2_Pref_presi_cod <- train(Pref_presi_cod ~ .,

                               method = "rf",

                               data = train2_Pref_presi_cod,

                               preProcess = c("center", "scale"),

                               tuneGrid = expand.grid(mtry = c(2:10)),

                               trControl = ctrl)

rfFit2_Pref_presi_cod

varImp(rfFit2_Pref_presi_cod)

plot(varImp(rfFit2_Pref_presi_cod), top = 10, col = "#0570B0", main = "M2")

rfFit2_Pref_presi_cod$finalModel

pred2_Pref_presi_cod <- predict(rfFit2_Pref_presi_cod, test)

impu_Pref_presi_cod2 <- predict(rfFit2_Pref_presi_cod, impu_Pref_presi_cod)

table(pred2_Pref_presi_cod)

confusionMatrix(pred2_Pref_presi_cod[test$Pref_presi_cod!=99],test_Pref_presi_cod)

CM2_Pref_presi_cod <- confusionMatrix(pred2_Pref_presi_cod[test$Pref_presi_cod!=99],test_Pref_presi_cod)$table

AC2_Pref_presi_cod<- as.vector(confusionMatrix(pred2_Pref_presi_cod[test$Pref_presi_cod!=99],test_Pref_presi_cod)$overall[1])

M2[NA_Pref_presi_cod,"Pref_presi_cod"] <- pred2_Pref_presi_cod[pos]

M2[NA_Pref_presi_cod_impu,"Pref_presi_cod"] <- impu_Pref_presi_cod2

M = 3

set.seed(2, sample.kind = "Rounding")

rfFit3_Pref_presi_cod <- train(Pref_presi_cod ~ .,

                               method = "rf",

                               data = train2_Pref_presi_cod,

                               preProcess = c("center", "scale"),

                               tuneGrid = expand.grid(mtry = c(2:10)),

                               trControl = ctrl)

rfFit3_Pref_presi_cod

varImp(rfFit3_Pref_presi_cod)

plot(varImp(rfFit3_Pref_presi_cod), top = 10, col = "#41AE76", main = "M3")

rfFit3_Pref_presi_cod$finalModel

pred3_Pref_presi_cod <- predict(rfFit3_Pref_presi_cod, test)

impu_Pref_presi_cod3 <- predict(rfFit3_Pref_presi_cod, impu_Pref_presi_cod)

table(pred3_Pref_presi_cod)

confusionMatrix(pred3_Pref_presi_cod[test$Pref_presi_cod!=99],test_Pref_presi_cod)

CM3_Pref_presi_cod <- confusionMatrix(pred3_Pref_presi_cod[test$Pref_presi_cod!=99],test_Pref_presi_cod)$table

AC3_Pref_presi_cod<- as.vector(confusionMatrix(pred3_Pref_presi_cod[test$Pref_presi_cod!=99],test_Pref_presi_cod)$overall[1])

 M3[NA_Pref_presi_cod,"Pref_presi_cod"] <- pred3_Pref_presi_cod[pos]

M3[NA_Pref_presi_cod_impu,"Pref_presi_cod"] <- impu_Pref_presi_cod3

Matriz Confusión

CMT_Pref_presi_cod <- (CM1_Pref_presi_cod)

for(i in 1:nrow(CMT_Pref_presi_cod))

{

  for(j in 1:ncol(CMT_Pref_presi_cod))

  {

    if((CM1_Pref_presi_cod[i,j]+CM2_Pref_presi_cod[i,j]+CM3_Pref_presi_cod[i,j])%%3 != 0)

    {

      CMT_Pref_presi_cod[i,j] = as.character(round((CM1_Pref_presi_cod[i,j]+CM2_Pref_presi_cod[i,j]+CM3_Pref_presi_cod[i,j])/3,2))

    }else{

      CMT_Pref_presi_cod[i,j] = as.character(as.integer((CM1_Pref_presi_cod[i,j]+CM2_Pref_presi_cod[i,j]+CM3_Pref_presi_cod[i,j])/3))

    }

  }

}

CMT_Pref_presi_cod = cbind(c(1:9), CMT_Pref_presi_cod)

kable(CMT_Pref_presi_cod, position = "center", booktabs = TRUE, align = "cccccc", caption = "<left><em> Matriz de confusión Preferencia como presidente del gobierno </em></center>", escape = FALSE, col.names = c("Prediction", "1","2","3", "4", "5", "6", "7", "8", "9"),position = "center", row_label_position = "c", font_size = 15) %>%

  kableExtra::footnote(symbol = c("Al tomar la media de los elementos de las matrices de confusión,  

            es posible que no se obtenga un número entero"), threeparttable=T)%>%

  kable_classic(full_width = F,  html_font = "Times New Roman")%>%

  add_header_above(c(" " = 1, "Reference" = 1, " " = 8))%>%

  column_spec(1:10, width = "1.2cm")

ACT_Pref_presi_cod <- c(AC1_Pref_presi_cod,AC2_Pref_presi_cod,AC3_Pref_presi_cod)

ACM_Pref_presi_cod <- mean(c(ACT_Pref_presi_cod))

ACSD_Pref_presi_cod <- sqrt(var(ACT_Pref_presi_cod)/3)

 

-        Imputación de la auto-ubicación ideológica

# M = 1

train2_Ideologia_cod <- conjunto[conjunto[,"Ideologia_cod"]!="99",]

impu_Ideologia_cod <- conjunto[conjunto[,"Ideologia_cod"]=="99",]

dim(train2_Ideologia_cod)[1]

dim(impu_Ideologia_cod)[1]

table(train2_Ideologia_cod$Ideologia_cod)

train2_Ideologia_cod[,"Ideologia_cod"] <- droplevels(train2_Ideologia_cod[,"Ideologia_cod"])

table(train2_Ideologia_cod$Ideologia_cod)

ctrl <- trainControl(method = "cv", number = 5)

# RF train with CV to optimize number of variables

#library(doMC)

#registerDoMC(cores = 2)

set.seed(0, sample.kind = "Rounding")

rfFit_Ideologia_cod <- train(Ideologia_cod ~ .,

                             method = "rf",

                             data = train2_Ideologia_cod,

                             preProcess = c("center", "scale"),

                             tuneGrid = expand.grid(mtry = c(2:10)),

                             trControl = ctrl)

rfFit_Ideologia_cod

varImp(rfFit_Ideologia_cod)

plot(varImp(rfFit_Ideologia_cod), top = 10, col = "#74A9CF", main = "M1")

rfFit_Ideologia_cod$finalModel

pred_Ideologia_cod <- predict(rfFit_Ideologia_cod, test)

impu_Ideologia_cod1 <- predict(rfFit_Ideologia_cod, impu_Ideologia_cod)

table(pred_Ideologia_cod)

test_Ideologia_cod <- test$Ideologia_cod[test$Ideologia_cod!=99]

test_Ideologia_cod <- fct_drop(test_Ideologia_cod, only = "99")

confusionMatrix(pred_Ideologia_cod[test$Ideologia_cod!=99],test_Ideologia_cod)

CM1_Ideologia_cod <- confusionMatrix(pred_Ideologia_cod[test$Ideologia_cod!=99],test_Ideologia_cod)$table

AC1_Ideologia_cod<- as.vector(confusionMatrix(pred_Ideologia_cod[test$Ideologia_cod!=99],test_Ideologia_cod)$overall[1])

NA_Ideologia_cod <- as.numeric(rownames(test[test[,"Ideologia_cod"]=='99',]))

pos = c()

for(i in 1:nrow(test))

{

  if(test[i,"Ideologia_cod"]=="99")

  {

    pos=c(pos,i)

  }

}

NA_Ideologia_cod_impu <- as.numeric(rownames(impu_Ideologia_cod))

M1[NA_Ideologia_cod,"Ideologia_cod"] <- pred_Ideologia_cod[pos]

M1[NA_Ideologia_cod_impu,"Ideologia_cod"] <- impu_Ideologia_cod1

M = 2

set.seed(1, sample.kind = "Rounding")

rfFit2_Ideologia_cod <- train(Ideologia_cod ~ .,

                              method = "rf",

                              data = train2_Ideologia_cod,

                              preProcess = c("center", "scale"),

                              tuneGrid = expand.grid(mtry = c(2:10)),

                              trControl = ctrl)

rfFit2_Ideologia_cod

varImp(rfFit2_Ideologia_cod)

plot(varImp(rfFit2_Ideologia_cod), top = 10, col = "#0570B0", main = "M2")

rfFit2_Ideologia_cod$finalModel

pred2_Ideologia_cod <- predict(rfFit2_Ideologia_cod, test)

impu_Ideologia_cod2 <- predict(rfFit2_Ideologia_cod, impu_Ideologia_cod)

table(pred2_Ideologia_cod)

confusionMatrix(pred2_Ideologia_cod[test$Ideologia_cod!=99],test_Ideologia_cod)

CM2_Ideologia_cod <- confusionMatrix(pred2_Ideologia_cod[test$Ideologia_cod!=99],test_Ideologia_cod)$table

AC2_Ideologia_cod<- as.vector(confusionMatrix(pred2_Ideologia_cod[test$Ideologia_cod!=99],test_Ideologia_cod)$overall[1])

M2[NA_Ideologia_cod,"Ideologia_cod"] <- pred2_Ideologia_cod[pos]

M2[NA_Ideologia_cod_impu,"Ideologia_cod"] <- impu_Ideologia_cod2

M = 3

set.seed(2, sample.kind = "Rounding")

rfFit3_Ideologia_cod <- train(Ideologia_cod ~ .,

                              method = "rf",

                              data = train2_Ideologia_cod,

                              preProcess = c("center", "scale"),

                              tuneGrid = expand.grid(mtry = c(2:10)),

                              trControl = ctrl)

rfFit3_Ideologia_cod

varImp(rfFit3_Ideologia_cod)

plot(varImp(rfFit3_Ideologia_cod), top = 10, col = "#41AE76", main = "M3")

rfFit3_Ideologia_cod$finalModel

pred3_Ideologia_cod <- predict(rfFit3_Ideologia_cod, test)

impu_Ideologia_cod3 <- predict(rfFit3_Ideologia_cod, impu_Ideologia_cod)

table(pred3_Ideologia_cod)

confusionMatrix(pred3_Ideologia_cod[test$Ideologia_cod!=99],test_Ideologia_cod)

CM3_Ideologia_cod <- confusionMatrix(pred3_Ideologia_cod[test$Ideologia_cod!=99],test_Ideologia_cod)$table

AC3_Ideologia_cod<- as.vector(confusionMatrix(pred3_Ideologia_cod[test$Ideologia_cod!=99],test_Ideologia_cod)$overall[1])

M3[NA_Ideologia_cod,"Ideologia_cod"] <- pred3_Ideologia_cod[pos]

M3[NA_Ideologia_cod_impu,"Ideologia_cod"] <- impu_Ideologia_cod3

Matriz Confusión:

CMT_Ideologia_cod <- (CM1_Ideologia_cod)

for(i in 1:nrow(CMT_Ideologia_cod))

{

  for(j in 1:ncol(CMT_Ideologia_cod))

  {

    if((CM1_Ideologia_cod[i,j]+CM2_Ideologia_cod[i,j]+CM3_Ideologia_cod[i,j])%%3 != 0)

    {

      CMT_Ideologia_cod[i,j] = as.character(round((CM1_Ideologia_cod[i,j]+CM2_Ideologia_cod[i,j]+CM3_Ideologia_cod[i,j])/3,2))

    }else{

      CMT_Ideologia_cod[i,j] = as.character(as.integer((CM1_Ideologia_cod[i,j]+CM2_Ideologia_cod[i,j]+CM3_Ideologia_cod[i,j])/3))

    }

  }

}

CMT_Ideologia_cod = cbind(c(1:10), CMT_Ideologia_cod)

CM1_Ideologia_cod = cbind(c(1:10), CM1_Ideologia_cod)

CM2_Ideologia_cod = cbind(c(1:10), CM2_Ideologia_cod)

CM3_Ideologia_cod = cbind(c(1:10), CM3_Ideologia_cod)

kable(CMT_Ideologia_cod, position = "center", booktabs = TRUE, align = "cccccc", caption = "<left><em> Matriz de confusión Ideología </em></center>", escape = FALSE, col.names = c("Prediction", "1","2","3", "4", "5", "6", "7", "8", "9", "10"))%>%

  kableExtra::footnote(symbol = c("Al tomar la media de los elementos de las matrices de confusión,

                      es posible que no se obtenga un número entero"), threeparttable=T)%>%

  kable_classic(full_width = F,  html_font = "Times New Roman")%>%

  add_header_above(c(" " = 1, "Reference" = 1, " " = 9))%>%

  column_spec(1:11, width = "1.2cm")

kable(CM1_Ideologia_cod, position = "center", booktabs = TRUE, align = "cccccc", caption = "<left><em> Matriz de confusión Ideología 1ª imputación </em></center>", escape = FALSE, col.names = c("Prediction", "1","2","3", "4", "5", "6", "7", "8", "9", "10"))%>%

  kable_classic(full_width = F,  html_font = "Times New Roman")%>%

  add_header_above(c(" " = 1, "Reference" = 1, " " = 9))%>%

  column_spec(1:11, width = "1.2cm")

kable(CM2_Ideologia_cod, position = "center", booktabs = TRUE, align = "cccccc", caption = "<left><em> Matriz de confusión Ideología 2ª imputación </em></center>", escape = FALSE, col.names = c("Prediction", "1","2","3", "4", "5", "6", "7", "8", "9", "10"))%>%

  kable_classic(full_width = F,  html_font = "Times New Roman")%>%

  add_header_above(c(" " = 1, "Reference" = 1, " " = 9))%>%

  column_spec(1:11, width = "1.2cm")

kable(CM3_Ideologia_cod, position = "center", booktabs = TRUE, align = "cccccc", caption = "<left><em> Matriz de confusión Ideología 3ª imputación </em></center>", escape = FALSE, col.names = c("Prediction", "1","2","3", "4", "5", "6", "7", "8", "9", "10"))%>%

  kable_classic(full_width = F,  html_font = "Times New Roman")%>%

  add_header_above(c(" " = 1, "Reference" = 1, " " = 9))%>%

  column_spec(1:11, width = "1.2cm")

ACT_Ideologia_cod <- c(AC1_Ideologia_cod,AC2_Ideologia_cod,AC3_Ideologia_cod)

ACM_Ideologia_cod <- mean(c(ACT_Ideologia_cod))

ACSD_Ideologia_cod <- sqrt(var(ACT_Ideologia_cod)/3)

 

-          Imputación de la clasificación ideológica de Pablo Casado

# M = 1

train2_Ideologia_pc_cod <- conjunto[conjunto[,"Ideologia_pc_cod"]!="99",]

impu_Ideologia_pc_cod <- conjunto[conjunto[,"Ideologia_pc_cod"]=="99",]

dim(train2_Ideologia_pc_cod)[1]

dim(impu_Ideologia_pc_cod)[1]

table(train2_Ideologia_pc_cod$Ideologia_pc_cod)

train2_Ideologia_pc_cod[,"Ideologia_pc_cod"] <- droplevels(train2_Ideologia_pc_cod[,"Ideologia_pc_cod"])

table(train2_Ideologia_pc_cod$Ideologia_pc_cod)

ctrl <- trainControl(method = "cv", number = 5)

# RF train with CV to optimize number of variables

#library(doMC)

#registerDoMC(cores = 2)

set.seed(0, sample.kind = "Rounding")

rfFit_Ideologia_pc_cod <- train(Ideologia_pc_cod ~ .,

                                method = "rf",

                                data = train2_Ideologia_pc_cod,

                                preProcess = c("center", "scale"),

                                tuneGrid = expand.grid(mtry = c(2:10)),

                                trControl = ctrl)

rfFit_Ideologia_pc_cod

varImp(rfFit_Ideologia_pc_cod)

plot(varImp(rfFit_Ideologia_pc_cod), top = 10, col = "#74A9CF", main = "M1")

rfFit_Ideologia_pc_cod$finalModel

pred_Ideologia_pc_cod <- predict(rfFit_Ideologia_pc_cod, test)

impu_Ideologia_pc_cod1 <- predict(rfFit_Ideologia_pc_cod, impu_Ideologia_pc_cod)

table(pred_Ideologia_pc_cod)

test_Ideologia_pc_cod <- test$Ideologia_pc_cod[test$Ideologia_pc_cod!=99]

test_Ideologia_pc_cod <- fct_drop(test_Ideologia_pc_cod, only = "99")

confusionMatrix(pred_Ideologia_pc_cod[test$Ideologia_pc_cod!=99],test_Ideologia_pc_cod)

CM1_Ideologia_pc_cod <- confusionMatrix(pred_Ideologia_pc_cod[test$Ideologia_pc_cod!=99],test_Ideologia_pc_cod)$table

AC1_Ideologia_pc_cod<- as.vector(confusionMatrix(pred_Ideologia_pc_cod[test$Ideologia_pc_cod!=99],test_Ideologia_pc_cod)$overall[1])

NA_Ideologia_pc_cod <- as.numeric(rownames(test[test[,"Ideologia_pc_cod"]=='99',]))

pos = c()

for(i in 1:nrow(test))

{

  if(test[i,"Ideologia_pc_cod"]=="99")

  {

    pos=c(pos,i)

  }

}

NA_Ideologia_pc_cod_impu <- as.numeric(rownames(impu_Ideologia_pc_cod))

M1[NA_Ideologia_pc_cod,"Ideologia_pc_cod"] <- pred_Ideologia_pc_cod[pos]

M1[NA_Ideologia_pc_cod_impu,"Ideologia_pc_cod"] <- impu_Ideologia_pc_cod1

M = 2

set.seed(1, sample.kind = "Rounding")

rfFit2_Ideologia_pc_cod <- train(Ideologia_pc_cod ~ .,

                                 method = "rf",

                                 data = train2_Ideologia_pc_cod,

                                 preProcess = c("center", "scale"),

                                 tuneGrid = expand.grid(mtry = c(2:10)),

                                 trControl = ctrl)

rfFit2_Ideologia_pc_cod

varImp(rfFit2_Ideologia_pc_cod)

plot(varImp(rfFit2_Ideologia_pc_cod), top = 10, col = "#0570B0", main = "M2")

rfFit2_Ideologia_pc_cod$finalModel

pred2_Ideologia_pc_cod <- predict(rfFit2_Ideologia_pc_cod, test)

impu_Ideologia_pc_cod2 <- predict(rfFit2_Ideologia_pc_cod, impu_Ideologia_pc_cod)

table(pred2_Ideologia_pc_cod)

confusionMatrix(pred2_Ideologia_pc_cod[test$Ideologia_pc_cod!=99],test_Ideologia_pc_cod)

CM2_Ideologia_pc_cod <- confusionMatrix(pred2_Ideologia_pc_cod[test$Ideologia_pc_cod!=99],test_Ideologia_pc_cod)$table

AC2_Ideologia_pc_cod<- as.vector(confusionMatrix(pred2_Ideologia_pc_cod[test$Ideologia_pc_cod!=99],test_Ideologia_pc_cod)$overall[1])

M2[NA_Ideologia_pc_cod,"Ideologia_pc_cod"] <- pred2_Ideologia_pc_cod[pos]

M2[NA_Ideologia_pc_cod_impu,"Ideologia_pc_cod"] <- impu_Ideologia_pc_cod2

M = 3

set.seed(2, sample.kind = "Rounding")

rfFit3_Ideologia_pc_cod <- train(Ideologia_pc_cod ~ .,

                                 method = "rf",

                                 data = train2_Ideologia_pc_cod,

                                 preProcess = c("center", "scale"),

                                 tuneGrid = expand.grid(mtry = c(2:10)),

                                 trControl = ctrl)

rfFit3_Ideologia_pc_cod

varImp(rfFit3_Ideologia_pc_cod)

plot(varImp(rfFit3_Ideologia_pc_cod), top = 10, col = "#41AE76", main = "M3")

rfFit3_Ideologia_pc_cod$finalModel

pred3_Ideologia_pc_cod <- predict(rfFit3_Ideologia_pc_cod, test)

impu_Ideologia_pc_cod3 <- predict(rfFit3_Ideologia_pc_cod, impu_Ideologia_pc_cod)

table(pred3_Ideologia_pc_cod)

confusionMatrix(pred3_Ideologia_pc_cod[test$Ideologia_pc_cod!=99],test_Ideologia_pc_cod)

CM3_Ideologia_pc_cod <- confusionMatrix(pred3_Ideologia_pc_cod[test$Ideologia_pc_cod!=99],test_Ideologia_pc_cod)$table

AC3_Ideologia_pc_cod<- as.vector(confusionMatrix(pred3_Ideologia_pc_cod[test$Ideologia_pc_cod!=99],test_Ideologia_pc_cod)$overall[1])

M3[NA_Ideologia_pc_cod,"Ideologia_pc_cod"] <- pred3_Ideologia_pc_cod[pos]

M3[NA_Ideologia_pc_cod_impu,"Ideologia_pc_cod"] <- impu_Ideologia_pc_cod3

Matriz Confusión:

CMT_Ideologia_pc_cod <- (CM1_Ideologia_pc_cod)

for(i in 1:nrow(CMT_Ideologia_pc_cod))

{

  for(j in 1:ncol(CMT_Ideologia_pc_cod))

  {

    if((CM1_Ideologia_pc_cod[i,j]+CM2_Ideologia_pc_cod[i,j]+CM3_Ideologia_pc_cod[i,j])%%3 != 0)

    {

      CMT_Ideologia_pc_cod[i,j] = as.character(round((CM1_Ideologia_pc_cod[i,j]+CM2_Ideologia_pc_cod[i,j]+CM3_Ideologia_pc_cod[i,j])/3,2))

    }else{

      CMT_Ideologia_pc_cod[i,j] = as.character(as.integer((CM1_Ideologia_pc_cod[i,j]+CM2_Ideologia_pc_cod[i,j]+CM3_Ideologia_pc_cod[i,j])/3))

    }

  }

}

CMT_Ideologia_pc_cod = cbind(c(1:11), CMT_Ideologia_pc_cod)

kable(CMT_Ideologia_pc_cod, position = "center", booktabs = TRUE, align = "cccccc", caption = "<left><em> Matriz de confusión Clasificación ideológica Pablo Casado </em></center>", escape = FALSE, col.names = c("Prediction", "1","2","3", "4", "5", "6", "7", "8", "9", "10", "11"), position = "center", row_label_position = "c", font_size = 15)%>%

  kableExtra::footnote(symbol = c("Al tomar la media de los elementos de las matrices de confusión,

                      es posible que no se obtenga un número entero"), threeparttable=T)%>%

  kable_classic(full_width = F,  html_font = "Times New Roman")%>%

  add_header_above(c(" " = 1, "Reference" = 1, " " = 10))%>%

  column_spec(1:12, width = "1.2cm")

ACT_Ideologia_pc_cod <- c(AC1_Ideologia_pc_cod,AC2_Ideologia_pc_cod,AC3_Ideologia_pc_cod)

ACM_Ideologia_pc_cod <- mean(c(ACT_Ideologia_pc_cod))

ACSD_Ideologia_pc_cod <- sqrt(var(ACT_Ideologia_pc_cod)/3)

 

-        Imputación del recuerdo de voto en las anteriores elecciones

# M = 1

train2_Recuerdo_cod <- conjunto[conjunto[,"Recuerdo_cod"]!="99",]

impu_Recuerdo_cod <- conjunto[conjunto[,"Recuerdo_cod"]=="99",]

dim(train2_Recuerdo_cod)[1]

dim(impu_Recuerdo_cod)[1]

table(train2_Recuerdo_cod$Recuerdo_cod)

train2_Recuerdo_cod[,"Recuerdo_cod"] <- droplevels(train2_Recuerdo_cod[,"Recuerdo_cod"])

table(train2_Recuerdo_cod$Recuerdo_cod)

ctrl <- trainControl(method = "cv", number = 5)

# RF train with CV to optimize number of variables

#library(doMC)

#registerDoMC(cores = 2)

set.seed(0, sample.kind = "Rounding")

rfFit_Recuerdo_cod <- train(Recuerdo_cod ~ .,

                            method = "rf",

                            data = train2_Recuerdo_cod,

                            preProcess = c("center", "scale"),

                            tuneGrid = expand.grid(mtry = c(2:10)),

                            trControl = ctrl)

rfFit_Recuerdo_cod

varImp(rfFit_Recuerdo_cod)

plot(varImp(rfFit_Recuerdo_cod), top = 10, col = "#74A9CF", main = "M1")

rfFit_Recuerdo_cod$finalModel

pred_Recuerdo_cod <- predict(rfFit_Recuerdo_cod, test)

impu_Recuerdo_cod1 <- predict(rfFit_Recuerdo_cod, impu_Recuerdo_cod)

table(pred_Recuerdo_cod)

test_Recuerdo_cod <- test$Recuerdo_cod[test$Recuerdo_cod!=99]

test_Recuerdo_cod <- droplevels(test_Recuerdo_cod)

confusionMatrix(pred_Recuerdo_cod[test$Recuerdo_cod!=99],test_Recuerdo_cod)

CM1_Recuerdo_cod <- confusionMatrix(pred_Recuerdo_cod[test$Recuerdo_cod!=99],test_Recuerdo_cod)$table

AC1_Recuerdo_cod <- as.vector(confusionMatrix(pred_Recuerdo_cod[test$Recuerdo_cod!=99],test_Recuerdo_cod)$overall[1])

NA_Recuerdo_cod <- as.numeric(rownames(test[test[,"Recuerdo_cod"]=='99',]))

pos = c()

for(i in 1:nrow(test))

{

  if(test[i,"Recuerdo_cod"]=="99")

  {

    pos=c(pos,i)

  }

}

 

NA_Recuerdo_cod_impu <- as.numeric(rownames(impu_Recuerdo_cod))

 

M1[NA_Recuerdo_cod,"Recuerdo_cod"] <- pred_Recuerdo_cod[pos]

M1[NA_Recuerdo_cod_impu,"Recuerdo_cod"] <- impu_Recuerdo_cod1

M = 2

set.seed(1, sample.kind = "Rounding")

rfFit2_Recuerdo_cod <- train(Recuerdo_cod ~ .,

                             method = "rf",

                             data = train2_Recuerdo_cod,

                             preProcess = c("center", "scale"),

                             tuneGrid = expand.grid(mtry = c(2:10)),

                             trControl = ctrl)

rfFit2_Recuerdo_cod

varImp(rfFit2_Recuerdo_cod)

plot(varImp(rfFit2_Recuerdo_cod), top = 10, col = "#0570B0", main = "M2")

rfFit2_Recuerdo_cod$finalModel

pred2_Recuerdo_cod <- predict(rfFit2_Recuerdo_cod, test)

impu_Recuerdo_cod2 <- predict(rfFit2_Recuerdo_cod, impu_Recuerdo_cod)

table(pred2_Recuerdo_cod)

confusionMatrix(pred2_Recuerdo_cod[test$Recuerdo_cod!=99],test_Recuerdo_cod)

CM2_Recuerdo_cod <- confusionMatrix(pred2_Recuerdo_cod[test$Recuerdo_cod!=99],test_Recuerdo_cod)$table

AC2_Recuerdo_cod <- as.vector(confusionMatrix(pred2_Recuerdo_cod[test$Recuerdo_cod!=99],test_Recuerdo_cod)$overall[1])

M2[NA_Recuerdo_cod,"Recuerdo_cod"] <- pred2_Recuerdo_cod[pos]

M2[NA_Recuerdo_cod_impu,"Recuerdo_cod"] <- impu_Recuerdo_cod2

M = 3

set.seed(2, sample.kind = "Rounding")

rfFit3_Recuerdo_cod <- train(Recuerdo_cod ~ .,

                             method = "rf",

                             data = train2_Recuerdo_cod,

                             preProcess = c("center", "scale"),

                             tuneGrid = expand.grid(mtry = c(2:10)),

                             trControl = ctrl)

rfFit3_Recuerdo_cod

varImp(rfFit3_Recuerdo_cod)

plot(varImp(rfFit3_Recuerdo_cod), top = 10, col = "#41AE76", main = "M3")

rfFit3_Recuerdo_cod$finalModel

pred3_Recuerdo_cod <- predict(rfFit3_Recuerdo_cod, test)

impu_Recuerdo_cod3 <- predict(rfFit3_Recuerdo_cod, impu_Recuerdo_cod)

table(pred3_Recuerdo_cod)

confusionMatrix(pred3_Recuerdo_cod[test$Recuerdo_cod!=99],test_Recuerdo_cod)

CM3_Recuerdo_cod <- confusionMatrix(pred3_Recuerdo_cod[test$Recuerdo_cod!=99],test_Recuerdo_cod)$table

AC3_Recuerdo_cod <- as.vector(confusionMatrix(pred3_Recuerdo_cod[test$Recuerdo_cod!=99],test_Recuerdo_cod)$overall[1])

M3[NA_Recuerdo_cod,"Recuerdo_cod"] <- pred3_Recuerdo_cod[pos]

M3[NA_Recuerdo_cod_impu,"Recuerdo_cod"] <- impu_Recuerdo_cod3

CMT_Recuerdo_cod <- (CM1_Recuerdo_cod)

for(i in 1:nrow(CMT_Recuerdo_cod))

{

  for(j in 1:ncol(CMT_Recuerdo_cod))

  {

    if((CM1_Recuerdo_cod[i,j]+CM2_Recuerdo_cod[i,j]+CM3_Recuerdo_cod[i,j])%%3 != 0)

    {

      CMT_Recuerdo_cod[i,j] = as.character(round((CM1_Recuerdo_cod[i,j]+CM2_Recuerdo_cod[i,j]+CM3_Recuerdo_cod[i,j])/3,2))

    }else{

      CMT_Recuerdo_cod[i,j] = as.character(as.integer((CM1_Recuerdo_cod[i,j]+CM2_Recuerdo_cod[i,j]+CM3_Recuerdo_cod[i,j])/3))

    }

  }

}

CMT_Recuerdo_cod = cbind(c(1:11), CMT_Recuerdo_cod)

kable(CMT_Recuerdo_cod, position = "center", booktabs = TRUE, align = "cccccc", caption = "<left><em> Matriz de confusión Recuerdo de Voto </em></center>", escape = FALSE, col.names = c("Prediction", "1","2","3", "4", "5", "6", "7", "8", "9", "10", "11"), position = "center", row_label_position = "c", font_size = 15)%>%

  kableExtra::footnote(symbol = c("Al tomar la media de los elementos de las matrices de confusión,  

            es posible que no se obtenga un número entero"), threeparttable=T)%>%

  kable_classic(full_width = F,  html_font = "Times New Roman")%>%

  add_header_above(c(" " = 1, "Reference" = 1, " " = 10))%>%

  column_spec(1:12, width = "1.2cm")

ACT_Recuerdo_cod <- c(AC1_Recuerdo_cod,AC2_Recuerdo_cod,AC3_Recuerdo_cod)

ACM_Recuerdo_cod <- mean(c(ACT_Recuerdo_cod))

ACSD_Recuerdo_cod <- sqrt(var(ACT_Recuerdo_cod)/3)

 

-          Imputación de la clasificación ideológica de Pedro Sánchez

# M = 1

train2_Ideologia_ps_cod <- conjunto[conjunto[,"Ideologia_ps_cod"]!="99",]

impu_Ideologia_ps_cod <- conjunto[conjunto[,"Ideologia_ps_cod"]=="99",]

dim(train2_Ideologia_ps_cod)[1]

dim(impu_Ideologia_ps_cod)[1]

table(train2_Ideologia_ps_cod$Ideologia_ps_cod)

train2_Ideologia_ps_cod[,"Ideologia_ps_cod"] <- droplevels(train2_Ideologia_ps_cod[,"Ideologia_ps_cod"])

table(train2_Ideologia_ps_cod$Ideologia_ps_cod)

ctrl <- trainControl(method = "cv", number = 5)

# RF train with CV to optimize number of variables

#library(doMC)

#registerDoMC(cores = 2)

set.seed(0, sample.kind = "Rounding")

rfFit_Ideologia_ps_cod <- train(Ideologia_ps_cod ~ .,

                                method = "rf",

                                data = train2_Ideologia_ps_cod,

                                preProcess = c("center", "scale"),

                                tuneGrid = expand.grid(mtry = c(2:10)),

                                trControl = ctrl)

rfFit_Ideologia_ps_cod

varImp(rfFit_Ideologia_ps_cod)

plot(varImp(rfFit_Ideologia_ps_cod), top = 10, col = "#74A9CF", main = "M1")

rfFit_Ideologia_ps_cod$finalModel

pred_Ideologia_ps_cod <- predict(rfFit_Ideologia_ps_cod, test)

impu_Ideologia_ps_cod1 <- predict(rfFit_Ideologia_ps_cod, impu_Ideologia_ps_cod)

table(pred_Ideologia_ps_cod)

test_Ideologia_ps_cod <- test$Ideologia_ps_cod[test$Ideologia_ps_cod!=99]

test_Ideologia_ps_cod <- fct_drop(test_Ideologia_ps_cod, only = "99")

confusionMatrix(pred_Ideologia_ps_cod[test$Ideologia_ps_cod!=99],test_Ideologia_ps_cod)

CM1_Ideologia_ps_cod <- confusionMatrix(pred_Ideologia_ps_cod[test$Ideologia_ps_cod!=99],test_Ideologia_ps_cod)$table

AC1_Ideologia_ps_cod <- as.vector(confusionMatrix(pred_Ideologia_ps_cod[test$Ideologia_ps_cod!=99],test_Ideologia_ps_cod)$overall[1])

NA_Ideologia_ps_cod <- as.numeric(rownames(test[test[,"Ideologia_ps_cod"]=='99',]))

pos = c()

for(i in 1:nrow(test))

{

  if(test[i,"Ideologia_ps_cod"]=="99")

  {

    pos=c(pos,i)

  }

}

 

NA_Ideologia_ps_cod_impu <- as.numeric(rownames(impu_Ideologia_ps_cod))

M1[NA_Ideologia_ps_cod,"Ideologia_ps_cod"] <- pred_Ideologia_ps_cod[pos]

M1[NA_Ideologia_ps_cod_impu,"Ideologia_ps_cod"] <- impu_Ideologia_ps_cod1

M = 2

set.seed(1, sample.kind = "Rounding")

rfFit2_Ideologia_ps_cod <- train(Ideologia_ps_cod ~ .,

                                 method = "rf",

                                 data = train2_Ideologia_ps_cod,

                                 preProcess = c("center", "scale"),

                                 tuneGrid = expand.grid(mtry = c(2:10)),

                                 trControl = ctrl)

rfFit2_Ideologia_ps_cod

varImp(rfFit2_Ideologia_ps_cod)

plot(varImp(rfFit2_Ideologia_ps_cod), top = 10, col = "#0570B0", main = "M2")

rfFit2_Ideologia_ps_cod$finalModel

pred2_Ideologia_ps_cod <- predict(rfFit2_Ideologia_ps_cod, test)

impu_Ideologia_ps_cod2 <- predict(rfFit2_Ideologia_ps_cod, impu_Ideologia_ps_cod)

table(pred2_Ideologia_ps_cod)

confusionMatrix(pred2_Ideologia_ps_cod[test$Ideologia_ps_cod!=99],test_Ideologia_ps_cod)

CM2_Ideologia_ps_cod <- confusionMatrix(pred2_Ideologia_ps_cod[test$Ideologia_ps_cod!=99],test_Ideologia_ps_cod)$table

AC2_Ideologia_ps_cod <- as.vector(confusionMatrix(pred2_Ideologia_ps_cod[test$Ideologia_ps_cod!=99],test_Ideologia_ps_cod)$overall[1])

M2[NA_Ideologia_ps_cod,"Ideologia_ps_cod"] <- pred2_Ideologia_ps_cod[pos]

M2[NA_Ideologia_ps_cod_impu,"Ideologia_ps_cod"] <- impu_Ideologia_ps_cod2

M = 3

set.seed(2, sample.kind = "Rounding")

rfFit3_Ideologia_ps_cod <- train(Ideologia_ps_cod ~ .,

                                 method = "rf",

                                 data = train2_Ideologia_ps_cod,

                                 preProcess = c("center", "scale"),

                                 tuneGrid = expand.grid(mtry = c(2:10)),

                                 trControl = ctrl)

rfFit3_Ideologia_ps_cod

varImp(rfFit3_Ideologia_ps_cod)

plot(varImp(rfFit3_Ideologia_ps_cod), top = 10, col = "#41AE76", main = "M3")

rfFit3_Ideologia_ps_cod$finalModel

pred3_Ideologia_ps_cod <- predict(rfFit3_Ideologia_ps_cod, test)

impu_Ideologia_ps_cod3 <- predict(rfFit3_Ideologia_ps_cod, impu_Ideologia_ps_cod)

table(pred3_Ideologia_ps_cod)

confusionMatrix(pred3_Ideologia_ps_cod[test$Ideologia_ps_cod!=99],test_Ideologia_ps_cod)

CM3_Ideologia_ps_cod <- confusionMatrix(pred3_Ideologia_ps_cod[test$Ideologia_ps_cod!=99],test_Ideologia_ps_cod)$table

AC3_Ideologia_ps_cod <- as.vector(confusionMatrix(pred3_Ideologia_ps_cod[test$Ideologia_ps_cod!=99],test_Ideologia_ps_cod)$overall[1])

M3[NA_Ideologia_ps_cod,"Ideologia_ps_cod"] <- pred3_Ideologia_ps_cod[pos]

M3[NA_Ideologia_ps_cod_impu,"Ideologia_ps_cod"] <- impu_Ideologia_ps_cod3

Matriz confusión

CMT_Ideologia_ps_cod <- (CM1_Ideologia_ps_cod)

for(i in 1:nrow(CMT_Ideologia_ps_cod))

{

  for(j in 1:ncol(CMT_Ideologia_ps_cod))

  {

    if((CM1_Ideologia_ps_cod[i,j]+CM2_Ideologia_ps_cod[i,j]+CM3_Ideologia_ps_cod[i,j])%%3 != 0)

    {

      CMT_Ideologia_ps_cod[i,j] = as.character(round((CM1_Ideologia_ps_cod[i,j]+CM2_Ideologia_ps_cod[i,j]+CM3_Ideologia_ps_cod[i,j])/3,2))

    }else{

      CMT_Ideologia_ps_cod[i,j] = as.character(as.integer((CM1_Ideologia_ps_cod[i,j]+CM2_Ideologia_ps_cod[i,j]+CM3_Ideologia_ps_cod[i,j])/3))

    }

  }

}

CMT_Ideologia_ps_cod = cbind(c(1:11), CMT_Ideologia_ps_cod)

kable(CMT_Ideologia_ps_cod, position = "center", booktabs = TRUE, align = "cccccc", caption = "<left><em> Matriz de confusión Clasificación ideológica Pedro Sánchez </em></center>", escape = FALSE, col.names = c("Prediction", "1","2","3", "4", "5", "6", "7", "8", "9", "10", "11"), position = "center", row_label_position = "c", font_size = 15)%>%

  kableExtra::footnote(symbol = c("Al tomar la media de los elementos de las matrices de confusión,

                      es posible que no se obtenga un número entero"), threeparttable=T)%>%

  kable_classic(full_width = F,  html_font = "Times New Roman")%>%

  add_header_above(c(" " = 1, "Reference" = 1, " " = 10))%>%

  column_spec(1:12, width = "1.2cm")

ACT_Ideologia_ps_cod <- c(AC1_Ideologia_ps_cod,AC2_Ideologia_ps_cod,AC3_Ideologia_ps_cod)

ACM_Ideologia_ps_cod <- mean(c(ACT_Ideologia_ps_cod))

ACSD_Ideologia_ps_cod <- sqrt(var(ACT_Ideologia_ps_cod)/3)

 

-        Imputación de la clasificación ideológica de Santiago Abascal

# M = 1

train2_Ideologia_sa_cod <- conjunto[conjunto[,"Ideologia_sa_cod"]!="99",]

impu_Ideologia_sa_cod <- conjunto[conjunto[,"Ideologia_sa_cod"]=="99",]

dim(train2_Ideologia_sa_cod)[1]

dim(impu_Ideologia_sa_cod)[1]

table(train2_Ideologia_sa_cod$Ideologia_sa_cod)

train2_Ideologia_sa_cod[,"Ideologia_sa_cod"] <- droplevels(train2_Ideologia_sa_cod[,"Ideologia_sa_cod"])

table(train2_Ideologia_sa_cod$Ideologia_sa_cod)

ctrl <- trainControl(method = "cv", number = 5)

# RF train with CV to optimize number of variables

#library(doMC)

#registerDoMC(cores = 2)

set.seed(0, sample.kind = "Rounding")

rfFit_Ideologia_sa_cod <- train(Ideologia_sa_cod ~ .,

                                method = "rf",

                                data = train2_Ideologia_sa_cod,

                                preProcess = c("center", "scale"),

                                tuneGrid = expand.grid(mtry = c(2:10)),

                                trControl = ctrl)

rfFit_Ideologia_sa_cod

varImp(rfFit_Ideologia_sa_cod)

plot(varImp(rfFit_Ideologia_sa_cod), top = 10, col = "#74A9CF", main = "M1")

rfFit_Ideologia_sa_cod$finalModel

pred_Ideologia_sa_cod <- predict(rfFit_Ideologia_sa_cod, test)

impu_Ideologia_sa_cod1 <- predict(rfFit_Ideologia_sa_cod, impu_Ideologia_sa_cod)

table(pred_Ideologia_sa_cod)

test_Ideologia_sa_cod <- test$Ideologia_sa_cod[test$Ideologia_sa_cod!=99]

test_Ideologia_sa_cod <- fct_drop(test_Ideologia_sa_cod, only = "99")

confusionMatrix(pred_Ideologia_sa_cod[test$Ideologia_sa_cod!=99],test_Ideologia_sa_cod)

CM1_Ideologia_sa_cod <- confusionMatrix(pred_Ideologia_sa_cod[test$Ideologia_sa_cod!=99],test_Ideologia_sa_cod)$table

AC1_Ideologia_sa_cod <- as.vector(confusionMatrix(pred_Ideologia_sa_cod[test$Ideologia_sa_cod!=99],test_Ideologia_sa_cod)$overall[1])

NA_Ideologia_sa_cod <- as.numeric(rownames(test[test[,"Ideologia_sa_cod"]=='99',]))

pos = c()

for(i in 1:nrow(test))

{

  if(test[i,"Ideologia_sa_cod"]=="99")

  {

    pos=c(pos,i)

  }

}

 

NA_Ideologia_sa_cod_impu <- as.numeric(rownames(impu_Ideologia_sa_cod))

M1[NA_Ideologia_sa_cod,"Ideologia_sa_cod"] <- pred_Ideologia_sa_cod[pos]

M1[NA_Ideologia_sa_cod_impu,"Ideologia_sa_cod"] <- impu_Ideologia_sa_cod1

M = 2

set.seed(1, sample.kind = "Rounding")

rfFit2_Ideologia_sa_cod <- train(Ideologia_sa_cod ~ .,

                                 method = "rf",

                                 data = train2_Ideologia_sa_cod,

                                 preProcess = c("center", "scale"),

                                 tuneGrid = expand.grid(mtry = c(2:10)),

                                 trControl = ctrl)

rfFit2_Ideologia_sa_cod

varImp(rfFit2_Ideologia_sa_cod)

plot(varImp(rfFit2_Ideologia_sa_cod), top = 10, col = "#0570B0", main = "M2")

rfFit2_Ideologia_sa_cod$finalModel

pred2_Ideologia_sa_cod <- predict(rfFit2_Ideologia_sa_cod, test)

impu_Ideologia_sa_cod2 <- predict(rfFit2_Ideologia_sa_cod, impu_Ideologia_sa_cod)

table(pred2_Ideologia_sa_cod)

confusionMatrix(pred2_Ideologia_sa_cod[test$Ideologia_sa_cod!=99],test_Ideologia_sa_cod)

CM2_Ideologia_sa_cod <- confusionMatrix(pred2_Ideologia_sa_cod[test$Ideologia_sa_cod!=99],test_Ideologia_sa_cod)$table

AC2_Ideologia_sa_cod <- as.vector(confusionMatrix(pred2_Ideologia_sa_cod[test$Ideologia_sa_cod!=99],test_Ideologia_sa_cod)$overall[1])

M2[NA_Ideologia_sa_cod,"Ideologia_sa_cod"] <- pred2_Ideologia_sa_cod[pos]

M2[NA_Ideologia_sa_cod_impu,"Ideologia_sa_cod"] <- impu_Ideologia_sa_cod2

M = 3

set.seed(2, sample.kind = "Rounding")

rfFit3_Ideologia_sa_cod <- train(Ideologia_sa_cod ~ .,

                                 method = "rf",

                                 data = train2_Ideologia_sa_cod,

                                 preProcess = c("center", "scale"),

                                 tuneGrid = expand.grid(mtry = c(2:10)),

                                 trControl = ctrl)

rfFit3_Ideologia_sa_cod

varImp(rfFit3_Ideologia_sa_cod)

plot(varImp(rfFit3_Ideologia_sa_cod), top = 10, col = "#41AE76", main = "M3")

rfFit3_Ideologia_sa_cod$finalModel

pred3_Ideologia_sa_cod <- predict(rfFit3_Ideologia_sa_cod, test)

impu_Ideologia_sa_cod3 <- predict(rfFit3_Ideologia_sa_cod, impu_Ideologia_sa_cod)

table(pred3_Ideologia_sa_cod)

confusionMatrix(pred3_Ideologia_sa_cod[test$Ideologia_sa_cod!=99],test_Ideologia_sa_cod)

CM3_Ideologia_sa_cod <- confusionMatrix(pred3_Ideologia_sa_cod[test$Ideologia_sa_cod!=99],test_Ideologia_sa_cod)$table

AC3_Ideologia_sa_cod <- as.vector(confusionMatrix(pred3_Ideologia_sa_cod[test$Ideologia_sa_cod!=99],test_Ideologia_sa_cod)$overall[1])

M3[NA_Ideologia_sa_cod,"Ideologia_sa_cod"] <- pred3_Ideologia_sa_cod[pos]

M3[NA_Ideologia_sa_cod_impu,"Ideologia_sa_cod"] <- impu_Ideologia_sa_cod3

Matriz confusión

CMT_Ideologia_sa_cod <- (CM1_Ideologia_sa_cod)

for(i in 1:nrow(CMT_Ideologia_sa_cod))

{

  for(j in 1:ncol(CMT_Ideologia_sa_cod))

  {

    if((CM1_Ideologia_sa_cod[i,j]+CM2_Ideologia_sa_cod[i,j]+CM3_Ideologia_sa_cod[i,j])%%3 != 0)

    {

      CMT_Ideologia_sa_cod[i,j] = as.character(round((CM1_Ideologia_sa_cod[i,j]+CM2_Ideologia_sa_cod[i,j]+CM3_Ideologia_sa_cod[i,j])/3,2))

    }else{

      CMT_Ideologia_sa_cod[i,j] = as.character(as.integer((CM1_Ideologia_sa_cod[i,j]+CM2_Ideologia_sa_cod[i,j]+CM3_Ideologia_sa_cod[i,j])/3))

    }

  }

}

CMT_Ideologia_sa_cod = cbind(c(1:11), CMT_Ideologia_sa_cod)

kable(CMT_Ideologia_sa_cod, position = "center", booktabs = TRUE, align = "cccccc", caption = "<left><em> Matriz de confusión Clasificación ideológica Santaigo Abascal </em></center>", escape = FALSE, col.names = c("Prediction", "1","2","3", "4", "5", "6", "7", "8", "9", "10", "11"), position = "center", row_label_position = "c", font_size = 15)%>%

  kableExtra::footnote(symbol = c("Al tomar la media de los elementos de las matrices de confusión,

                      es posible que no se obtenga un número entero"), threeparttable=T)%>%

  kable_classic(full_width = F,  html_font = "Times New Roman")%>%

  add_header_above(c(" " = 1, "Reference" = 1, " " = 10))%>%

  column_spec(1:12, width = "1.2cm")

ACT_Ideologia_sa_cod <- c(AC1_Ideologia_sa_cod,AC2_Ideologia_sa_cod,AC3_Ideologia_sa_cod)

ACM_Ideologia_sa_cod <- mean(c(ACT_Ideologia_sa_cod))

ACSD_Ideologia_sa_cod <- sqrt(var(ACT_Ideologia_sa_cod)/3)

 

-        Imputación de la clasificación ideológica de Pablo Iglesias

# M = 1

train2_Ideologia_pi_cod <- conjunto[conjunto[,"Ideologia_pi_cod"]!="99",]

impu_Ideologia_pi_cod <- conjunto[conjunto[,"Ideologia_pi_cod"]=="99",]

dim(train2_Ideologia_pi_cod)[1]

dim(impu_Ideologia_pi_cod)[1]

table(train2_Ideologia_pi_cod$Ideologia_pi_cod)

train2_Ideologia_pi_cod[,"Ideologia_pi_cod"] <- droplevels(train2_Ideologia_pi_cod[,"Ideologia_pi_cod"])

table(train2_Ideologia_pi_cod$Ideologia_pi_cod)

ctrl <- trainControl(method = "cv", number = 5)

# RF train with CV to optimize number of variables

#library(doMC)

#registerDoMC(cores = 2)

set.seed(0, sample.kind = "Rounding")

rfFit_Ideologia_pi_cod <- train(Ideologia_pi_cod ~ .,

                                method = "rf",

                                data = train2_Ideologia_pi_cod,

                                preProcess = c("center", "scale"),

                                tuneGrid = expand.grid(mtry = c(2:10)),

                                trControl = ctrl)

rfFit_Ideologia_pi_cod

varImp(rfFit_Ideologia_pi_cod)

plot(varImp(rfFit_Ideologia_pi_cod), top = 10, col = "#74A9CF", main = "M2")

rfFit_Ideologia_pi_cod$finalModel

pred_Ideologia_pi_cod <- predict(rfFit_Ideologia_pi_cod, test)

impu_Ideologia_pi_cod1 <- predict(rfFit_Ideologia_pi_cod, impu_Ideologia_pi_cod)

table(pred_Ideologia_pi_cod)

test_Ideologia_pi_cod <- test$Ideologia_pi_cod[test$Ideologia_pi_cod!=99]

test_Ideologia_pi_cod <- fct_drop(test_Ideologia_pi_cod, only = "99")

confusionMatrix(pred_Ideologia_pi_cod[test$Ideologia_pi_cod!=99],test_Ideologia_pi_cod)

CM1_Ideologia_pi_cod <- confusionMatrix(pred_Ideologia_pi_cod[test$Ideologia_pi_cod!=99],test_Ideologia_pi_cod)$table

AC1_Ideologia_pi_cod <- as.vector(confusionMatrix(pred_Ideologia_pi_cod[test$Ideologia_pi_cod!=99],test_Ideologia_pi_cod)$overall[1])

NA_Ideologia_pi_cod <- as.numeric(rownames(test[test[,"Ideologia_pi_cod"]=='99',]))

pos = c()

for(i in 1:nrow(test))

{

  if(test[i,"Ideologia_pi_cod"]=="99")

  {

    pos=c(pos,i)

  }

}

NA_Ideologia_pi_cod_impu <- as.numeric(rownames(impu_Ideologia_pi_cod))

M1[NA_Ideologia_pi_cod,"Ideologia_pi_cod"] <- pred_Ideologia_pi_cod[pos]

M1[NA_Ideologia_pi_cod_impu,"Ideologia_pi_cod"] <- impu_Ideologia_pi_cod1

M = 2

set.seed(1, sample.kind = "Rounding")

rfFit2_Ideologia_pi_cod <- train(Ideologia_pi_cod ~ .,

                                 method = "rf",

                                 data = train2_Ideologia_pi_cod,

                                 preProcess = c("center", "scale"),

                                 tuneGrid = expand.grid(mtry = c(2:10)),

                                 trControl = ctrl)

rfFit2_Ideologia_pi_cod

varImp(rfFit2_Ideologia_pi_cod)

plot(varImp(rfFit2_Ideologia_pi_cod), top = 10, col = "#0570B0", main = "M2")

rfFit2_Ideologia_pi_cod$finalModel

pred2_Ideologia_pi_cod <- predict(rfFit2_Ideologia_pi_cod, test)

impu_Ideologia_pi_cod2 <- predict(rfFit2_Ideologia_pi_cod, impu_Ideologia_pi_cod)

table(pred2_Ideologia_pi_cod)

confusionMatrix(pred2_Ideologia_pi_cod[test$Ideologia_pi_cod!=99],test_Ideologia_pi_cod)

CM2_Ideologia_pi_cod <- confusionMatrix(pred2_Ideologia_pi_cod[test$Ideologia_pi_cod!=99],test_Ideologia_pi_cod)$table

AC2_Ideologia_pi_cod <- as.vector(confusionMatrix(pred2_Ideologia_pi_cod[test$Ideologia_pi_cod!=99],test_Ideologia_pi_cod)$overall[1])

M2[NA_Ideologia_pi_cod,"Ideologia_pi_cod"] <- pred2_Ideologia_pi_cod[pos]

M2[NA_Ideologia_pi_cod_impu,"Ideologia_pi_cod"] <- impu_Ideologia_pi_cod2

M = 3

set.seed(2, sample.kind = "Rounding")

rfFit3_Ideologia_pi_cod <- train(Ideologia_pi_cod ~ .,

                                 method = "rf",

                                 data = train2_Ideologia_pi_cod,

                                 preProcess = c("center", "scale"),

                                 tuneGrid = expand.grid(mtry = c(2:10)),

                                 trControl = ctrl)

rfFit3_Ideologia_pi_cod

varImp(rfFit3_Ideologia_pi_cod)

plot(varImp(rfFit3_Ideologia_pi_cod), top = 10, col = "#41AE76", main = "M3")

rfFit3_Ideologia_pi_cod$finalModel

pred3_Ideologia_pi_cod <- predict(rfFit3_Ideologia_pi_cod, test)

impu_Ideologia_pi_cod3 <- predict(rfFit3_Ideologia_pi_cod, impu_Ideologia_pi_cod)

table(pred3_Ideologia_pi_cod)

confusionMatrix(pred3_Ideologia_pi_cod[test$Ideologia_pi_cod!=99],test_Ideologia_pi_cod)

CM3_Ideologia_pi_cod <- confusionMatrix(pred3_Ideologia_pi_cod[test$Ideologia_pi_cod!=99],test_Ideologia_pi_cod)$table

AC3_Ideologia_pi_cod <- as.vector(confusionMatrix(pred3_Ideologia_pi_cod[test$Ideologia_pi_cod!=99],test_Ideologia_pi_cod)$overall[1])

M3[NA_Ideologia_pi_cod,"Ideologia_pi_cod"] <- pred3_Ideologia_pi_cod[pos]

M3[NA_Ideologia_pi_cod_impu,"Ideologia_pi_cod"] <- impu_Ideologia_pi_cod3

Matriz Confusión

CMT_Ideologia_pi_cod <- (CM1_Ideologia_pi_cod)

for(i in 1:nrow(CMT_Ideologia_pi_cod))

{

  for(j in 1:ncol(CMT_Ideologia_pi_cod))

  {

    if((CM1_Ideologia_pi_cod[i,j]+CM2_Ideologia_pi_cod[i,j]+CM3_Ideologia_pi_cod[i,j])%%3 != 0)

    {

      CMT_Ideologia_pi_cod[i,j] = as.character(round((CM1_Ideologia_pi_cod[i,j]+CM2_Ideologia_pi_cod[i,j]+CM3_Ideologia_pi_cod[i,j])/3,2))

    }else{

      CMT_Ideologia_pi_cod[i,j] = as.character(as.integer((CM1_Ideologia_pi_cod[i,j]+CM2_Ideologia_pi_cod[i,j]+CM3_Ideologia_pi_cod[i,j])/3))

    }

  }

}

CMT_Ideologia_pi_cod = cbind(c(1:11), CMT_Ideologia_pi_cod)

kable(CMT_Ideologia_pi_cod, position = "center", booktabs = TRUE, align = "cccccc", caption = "<left><em> Matriz de confusión Clasificación ideológica Pablo Iglesias </em></center>", escape = FALSE, col.names = c("Prediction", "1","2","3", "4", "5", "6", "7", "8", "9", "10", "11"), position = "center", row_label_position = "c", font_size = 15)%>%

  kableExtra::footnote(symbol = c("Al tomar la media de los elementos de las matrices de confusión,

                      es posible que no se obtenga un número entero"), threeparttable=T)%>%

  kable_classic(full_width = F,  html_font = "Times New Roman")%>%

  add_header_above(c(" " = 1, "Reference" = 1, " " = 10))%>%

  column_spec(1:12, width = "1.2cm")

ACT_Ideologia_pi_cod <- c(AC1_Ideologia_pi_cod,AC2_Ideologia_pi_cod,AC3_Ideologia_pi_cod)

ACM_Ideologia_pi_cod <- mean(c(ACT_Ideologia_pi_cod))

ACSD_Ideologia_pi_cod <- sqrt(var(ACT_Ideologia_pi_cod)/3)

 

-        Imputación de la clasificación ideológica de Inés Arrimadas

# M = 1

train2_Ideologia_ia_cod <- conjunto[conjunto[,"Ideologia_ia_cod"]!="99",]

impu_Ideologia_ia_cod <- conjunto[conjunto[,"Ideologia_ia_cod"]=="99",]

dim(train2_Ideologia_ia_cod)[1]

dim(impu_Ideologia_ia_cod)[1]

table(train2_Ideologia_ia_cod$Ideologia_ia_cod)

train2_Ideologia_ia_cod[,"Ideologia_ia_cod"] <- droplevels(train2_Ideologia_ia_cod[,"Ideologia_ia_cod"])

table(train2_Ideologia_ia_cod$Ideologia_ia_cod)

ctrl <- trainControl(method = "cv", number = 5)

# RF train with CV to optimize number of variables

#library(doMC)

#registerDoMC(cores = 2)

set.seed(0, sample.kind = "Rounding")

rfFit_Ideologia_ia_cod <- train(Ideologia_ia_cod ~ .,

                                method = "rf",

                                data = train2_Ideologia_ia_cod,

                                preProcess = c("center", "scale"),

                                tuneGrid = expand.grid(mtry = c(2:10)),

                                trControl = ctrl)

rfFit_Ideologia_ia_cod

varImp(rfFit_Ideologia_ia_cod)

plot(varImp(rfFit_Ideologia_ia_cod), top = 10, col = "#74A9CF", main = "M1")

rfFit_Ideologia_ia_cod$finalModel

pred_Ideologia_ia_cod <- predict(rfFit_Ideologia_ia_cod, test)

impu_Ideologia_ia_cod1 <- predict(rfFit_Ideologia_ia_cod, impu_Ideologia_ia_cod)

table(pred_Ideologia_ia_cod)

test_Ideologia_ia_cod <- test$Ideologia_ia_cod[test$Ideologia_ia_cod!=99]

test_Ideologia_ia_cod <- fct_drop(test_Ideologia_ia_cod, only = "99")

confusionMatrix(pred_Ideologia_ia_cod[test$Ideologia_ia_cod!=99],test_Ideologia_ia_cod)

CM1_Ideologia_ia_cod <- confusionMatrix(pred_Ideologia_ia_cod[test$Ideologia_ia_cod!=99],test_Ideologia_ia_cod)$table

AC1_Ideologia_ia_cod <- as.vector(confusionMatrix(pred_Ideologia_ia_cod[test$Ideologia_ia_cod!=99],test_Ideologia_ia_cod)$overall[1])

NA_Ideologia_ia_cod <- as.numeric(rownames(test[test[,"Ideologia_ia_cod"]=='99',]))

pos = c()

for(i in 1:nrow(test))

{

  if(test[i,"Ideologia_ia_cod"]=="99")

  {

    pos=c(pos,i)

  }

}

NA_Ideologia_ia_cod_impu <- as.numeric(rownames(impu_Ideologia_ia_cod))

M1[NA_Ideologia_ia_cod,"Ideologia_ia_cod"] <- pred_Ideologia_ia_cod[pos]

M1[NA_Ideologia_ia_cod_impu,"Ideologia_ia_cod"] <- impu_Ideologia_ia_cod1

M = 2

set.seed(1, sample.kind = "Rounding")

rfFit2_Ideologia_ia_cod <- train(Ideologia_ia_cod ~ .,

                                 method = "rf",

                                 data = train2_Ideologia_ia_cod,

                                 preProcess = c("center", "scale"),

                                 tuneGrid = expand.grid(mtry = c(2:10)),

                                 trControl = ctrl)

rfFit2_Ideologia_ia_cod

varImp(rfFit2_Ideologia_ia_cod)

plot(varImp(rfFit2_Ideologia_ia_cod), top = 10, col = "#0570B0", main = "M2")

rfFit2_Ideologia_ia_cod$finalModel

pred2_Ideologia_ia_cod <- predict(rfFit2_Ideologia_ia_cod, test)

impu_Ideologia_ia_cod2 <- predict(rfFit2_Ideologia_ia_cod, impu_Ideologia_ia_cod)

table(pred2_Ideologia_ia_cod)

confusionMatrix(pred2_Ideologia_ia_cod[test$Ideologia_ia_cod!=99],test_Ideologia_ia_cod)

CM2_Ideologia_ia_cod <- confusionMatrix(pred2_Ideologia_ia_cod[test$Ideologia_ia_cod!=99],test_Ideologia_ia_cod)$table

AC2_Ideologia_ia_cod <- as.vector(confusionMatrix(pred2_Ideologia_ia_cod[test$Ideologia_ia_cod!=99],test_Ideologia_ia_cod)$overall[1])

M2[NA_Ideologia_ia_cod,"Ideologia_ia_cod"] <- pred2_Ideologia_ia_cod[pos]

M2[NA_Ideologia_ia_cod_impu,"Ideologia_ia_cod"] <- impu_Ideologia_ia_cod2

M = 3

set.seed(2, sample.kind = "Rounding")

rfFit3_Ideologia_ia_cod <- train(Ideologia_ia_cod ~ .,

                                 method = "rf",

                                 data = train2_Ideologia_ia_cod,

                                 preProcess = c("center", "scale"),

                                 tuneGrid = expand.grid(mtry = c(2:10)),

                                 trControl = ctrl)

rfFit3_Ideologia_ia_cod

varImp(rfFit3_Ideologia_ia_cod)

plot(varImp(rfFit3_Ideologia_ia_cod), top = 10, col = "#41AE76", main = "M3")

rfFit3_Ideologia_ia_cod$finalModel

pred3_Ideologia_ia_cod <- predict(rfFit3_Ideologia_ia_cod, test)

impu_Ideologia_ia_cod3 <- predict(rfFit3_Ideologia_ia_cod, impu_Ideologia_ia_cod)

table(pred3_Ideologia_ia_cod)

confusionMatrix(pred3_Ideologia_ia_cod[test$Ideologia_ia_cod!=99],test_Ideologia_ia_cod)

CM3_Ideologia_ia_cod <- confusionMatrix(pred3_Ideologia_ia_cod[test$Ideologia_ia_cod!=99],test_Ideologia_ia_cod)$table

AC3_Ideologia_ia_cod <- as.vector(confusionMatrix(pred3_Ideologia_ia_cod[test$Ideologia_ia_cod!=99],test_Ideologia_ia_cod)$overall[1])

M3[NA_Ideologia_ia_cod,"Ideologia_ia_cod"] <- pred3_Ideologia_ia_cod[pos]

M3[NA_Ideologia_ia_cod_impu,"Ideologia_ia_cod"] <- impu_Ideologia_ia_cod3

Matriz Confusión

CMT_Ideologia_ia_cod <- (CM1_Ideologia_ia_cod)

for(i in 1:nrow(CMT_Ideologia_ia_cod))

{

  for(j in 1:ncol(CMT_Ideologia_ia_cod))

  {

    if((CM1_Ideologia_ia_cod[i,j]+CM2_Ideologia_ia_cod[i,j]+CM3_Ideologia_ia_cod[i,j])%%3 != 0)

    {

      CMT_Ideologia_ia_cod[i,j] = as.character(round((CM1_Ideologia_ia_cod[i,j]+CM2_Ideologia_ia_cod[i,j]+CM3_Ideologia_ia_cod[i,j])/3,2))

    }else{

      CMT_Ideologia_ia_cod[i,j] = as.character(as.integer((CM1_Ideologia_ia_cod[i,j]+CM2_Ideologia_ia_cod[i,j]+CM3_Ideologia_ia_cod[i,j])/3))

    }

  }

}

CMT_Ideologia_ia_cod = cbind(c(1:11), CMT_Ideologia_ia_cod)

kable(CMT_Ideologia_ia_cod, position = "center", booktabs = TRUE, align = "cccccc", caption = "<left><em> Matriz de confusión Clasificación ideológica Inés Arrimadas </em></center>", escape = FALSE, col.names = c("Prediction", "1","2","3", "4", "5", "6", "7", "8", "9", "10", "11"), position = "center", row_label_position = "c", font_size = 15)%>%

  kableExtra::footnote(symbol = c("Al tomar la media de los elementos de las matrices de confusión,

                      es posible que no se obtenga un número entero"), threeparttable=T)%>%

  kable_classic(full_width = F,  html_font = "Times New Roman")%>%

  add_header_above(c(" " = 1, "Reference" = 1, " " = 10))%>%

  column_spec(1:12, width = "1.2cm")

ACT_Ideologia_ia_cod <- c(AC1_Ideologia_ia_cod,AC2_Ideologia_ia_cod,AC3_Ideologia_ia_cod)

ACM_Ideologia_ia_cod <- mean(c(ACT_Ideologia_ia_cod))

ACSD_Ideologia_ia_cod <- sqrt(var(ACT_Ideologia_ia_cod)/3)

 

-        Imputación de la intención de voto

# M = 1

train2_Voto_cod <- conjunto[conjunto[,"Voto_cod"]!="99",]

impu_Voto_cod <- conjunto[conjunto[,"Voto_cod"]=="99",]

dim(train2_Voto_cod)[1]

dim(impu_Voto_cod)[1]

table(train2_Voto_cod$Voto_cod)

train2_Voto_cod[,"Voto_cod"] <- droplevels(train2_Voto_cod[,"Voto_cod"])

table(train2_Voto_cod$Voto_cod)

ctrl <- trainControl(method = "cv", number = 5)

# RF train with CV to optimize number of variables

#library(doMC)

#registerDoMC(cores = 2)

set.seed(0, sample.kind = "Rounding")

rfFit_Voto_cod <- train(Voto_cod ~ .,

                        method = "rf",

                        data = train2_Voto_cod,

                        preProcess = c("center", "scale"),

                        tuneGrid = expand.grid(mtry = c(2:10)),

                        trControl = ctrl)

rfFit_Voto_cod

varImp(rfFit_Voto_cod)

plot(varImp(rfFit_Voto_cod), top = 10, col = "#74A9CF", main = "M1")

rfFit_Voto_cod$finalModel

pred_Voto_cod <- predict(rfFit_Voto_cod, test)

impu_Voto_cod1 <- predict(rfFit_Voto_cod, impu_Voto_cod)

table(pred_Voto_cod)

test_Voto_cod <- test$Voto_cod[test$Voto_cod!=99]

test_Voto_cod <- droplevels(test_Voto_cod)

confusionMatrix(pred_Voto_cod[test$Voto_cod!=99],test_Voto_cod)

CM1_Voto_cod <- confusionMatrix(pred_Voto_cod[test$Voto_cod!=99],test_Voto_cod)$table

AC1_Voto_cod <- as.vector(confusionMatrix(pred_Voto_cod[test$Voto_cod!=99],test_Voto_cod)$overall[1])

NA_Voto_cod <- as.numeric(rownames(test[test[,"Voto_cod"]=='99',]))

pos = c()

for(i in 1:nrow(test))

{

  if(test[i,"Voto_cod"]=="99")

  {

    pos=c(pos,i)

  }

}

NA_Voto_cod_impu <- as.numeric(rownames(impu_Voto_cod))

M1[NA_Voto_cod,"Voto_cod"] <- pred_Voto_cod[pos]

M1[NA_Voto_cod_impu,"Voto_cod"] <- impu_Voto_cod1

M = 2

set.seed(1, sample.kind = "Rounding")

rfFit2_Voto_cod <- train(Voto_cod ~ .,

                         method = "rf",

                         data = train2_Voto_cod,

                         preProcess = c("center", "scale"),

                         tuneGrid = expand.grid(mtry = c(2:10)),

                         trControl = ctrl)

rfFit2_Voto_cod

varImp(rfFit2_Voto_cod)

plot(varImp(rfFit2_Voto_cod), top = 10, col = "#0570B0", main = "M2")

rfFit2_Voto_cod$finalModel

pred2_Voto_cod <- predict(rfFit2_Voto_cod, test)

impu_Voto_cod2 <- predict(rfFit2_Voto_cod, impu_Voto_cod)

table(pred2_Voto_cod)

confusionMatrix(pred2_Voto_cod[test$Voto_cod!=99],test_Voto_cod)

CM2_Voto_cod <- confusionMatrix(pred2_Voto_cod[test$Voto_cod!=99],test_Voto_cod)$table

AC2_Voto_cod <- as.vector(confusionMatrix(pred2_Voto_cod[test$Voto_cod!=99],test_Voto_cod)$overall[1])

M2[NA_Voto_cod,"Voto_cod"] <- pred2_Voto_cod[pos]

M2[NA_Voto_cod_impu,"Voto_cod"] <- impu_Voto_cod2

M = 3

set.seed(2, sample.kind = "Rounding")

rfFit3_Voto_cod <- train(Voto_cod ~ .,

                         method = "rf",

                         data = train2_Voto_cod,

                         preProcess = c("center", "scale"),

                         tuneGrid = expand.grid(mtry = c(2:10)),

                         trControl = ctrl)

rfFit3_Voto_cod

plot(varImp(rfFit3_Voto_cod), top = 10, col = "#41AE76", main = "M3")

rfFit3_Voto_cod$finalModel

pred3_Voto_cod <- predict(rfFit3_Voto_cod, test)

impu_Voto_cod3 <- predict(rfFit3_Voto_cod, impu_Voto_cod)

table(pred3_Voto_cod)

confusionMatrix(pred3_Voto_cod[test$Voto_cod!=99],test_Voto_cod)

CM3_Voto_cod <- confusionMatrix(pred3_Voto_cod[test$Voto_cod!=99],test_Voto_cod)$table

AC3_Voto_cod <- as.vector(confusionMatrix(pred3_Voto_cod[test$Voto_cod!=99],test_Voto_cod)$overall[1])

M3[NA_Voto_cod,"Voto_cod"] <- pred3_Voto_cod[pos]

M3[NA_Voto_cod_impu,"Voto_cod"] <- impu_Voto_cod3

Matriz Confusion

CMT_Voto_cod <- (CM1_Voto_cod)

for(i in 1:nrow(CMT_Voto_cod))

{

  for(j in 1:ncol(CMT_Voto_cod))

  {

    if((CM1_Voto_cod[i,j]+CM2_Voto_cod[i,j]+CM3_Voto_cod[i,j])%%3 != 0)

    {

      CMT_Voto_cod[i,j] = as.character(round((CM1_Voto_cod[i,j]+CM2_Voto_cod[i,j]+CM3_Voto_cod[i,j])/3,2))

    }else{

      CMT_Voto_cod[i,j] = as.character(as.integer((CM1_Voto_cod[i,j]+CM2_Voto_cod[i,j]+CM3_Voto_cod[i,j])/3))

    }

  }

}

CMT_Voto_cod = cbind(c(1:10), CMT_Voto_cod)

CM1_Voto_cod = cbind(c(1:10), CM1_Voto_cod)

CM2_Voto_cod = cbind(c(1:10), CM2_Voto_cod)

CM3_Voto_cod = cbind(c(1:10), CM3_Voto_cod)

kable(CMT_Voto_cod, position = "center", booktabs = TRUE, align = "cccccc", caption = "<left><em> Matriz de confusión Intención de Voto </em></center>", escape = FALSE, col.names = c("Prediction", "1","2","3", "4", "5", "6", "7", "8", "9", "10"), table.attr = "style='width:30%;'")%>%

  kable_styling(full_width = FALSE, position = "center", row_label_position = "c", font_size = 15, latex_options="scale_down")%>%

  kable_classic(full_width = F,  html_font = "Times New Roman")%>%

  add_header_above(c(" " = 1, "Reference" = 1, " " = 9))%>%

  column_spec(1:11, width = "1.2cm")%>%

  kableExtra::footnote(symbol = c("Al tomar la media de los elementos de las matrices de confusión, es posible que no se obtenga un número entero"), threeparttable=T)

kable(CM1_Voto_cod, position = "center", booktabs = TRUE, align = "cccccc", caption = "<left><em> Matriz de confusión Intención de Voto 1ª imputación </em></center>", escape = FALSE, col.names = c("Prediction", "1","2","3", "4", "5", "6", "7", "8", "9", "10"), position = "center")%>%

  kable_classic(full_width = F,  html_font = "Times New Roman")%>%

  add_header_above(c(" " = 1, "Reference" = 1, " " = 9))%>%

  column_spec(1:11, width = "1.2cm")

kable(CM2_Voto_cod, position = "center", booktabs = TRUE, align = "cccccc", caption = "<left><em> Matriz de confusión Intención de Voto 2ª imputación </em></center>", escape = FALSE, col.names = c("Prediction", "1","2","3", "4", "5", "6", "7", "8", "9", "10"),position = "center")%>%

  kable_classic(full_width = F,  html_font = "Times New Roman")%>%

  add_header_above(c(" " = 1, "Reference" = 1, " " = 9))%>%

  column_spec(1:11, width = "1.2cm")

kable(CM3_Voto_cod, position = "center", booktabs = TRUE, align = "cccccc", caption = "<left><em> Matriz de confusión Intención de Voto 3ª imputación </em></center>", escape = FALSE, col.names = c("Prediction", "1","2","3", "4", "5", "6", "7", "8", "9", "10"), position = "center")%>%

  kable_classic(full_width = F,  html_font = "Times New Roman")%>%

  add_header_above(c(" " = 1, "Reference" = 1, " " = 9))%>%

  column_spec(1:11, width = "1.2cm")

ACT_Voto_cod <- c(AC1_Voto_cod,AC2_Voto_cod,AC3_Voto_cod)

ACM_Voto_cod <- mean(c(ACT_Voto_cod))

ACSD_Voto_cod <- sqrt(var(ACT_Voto_cod)/3)

 

-        Imputación de la intención de voto alternativo

# M = 1

train2_Voto_alternativo_cod <- conjunto[conjunto[,"Voto_alternativo_cod"]!="99",]

impu_Voto_alternativo_cod <- conjunto[conjunto[,"Voto_alternativo_cod"]=="99",]

dim(train2_Voto_alternativo_cod)[1]

dim(impu_Voto_alternativo_cod)[1]

table(train2_Voto_alternativo_cod$Voto_alternativo_cod)

train2_Voto_alternativo_cod[,"Voto_alternativo_cod"] <- droplevels(train2_Voto_alternativo_cod[,"Voto_alternativo_cod"])

table(train2_Voto_alternativo_cod$Voto_alternativo_cod)

ctrl <- trainControl(method = "cv", number = 5)

# RF train with CV to optimize number of variables

#library(doMC)

#registerDoMC(cores = 2)

set.seed(0, sample.kind = "Rounding")

rfFit_Voto_alternativo_cod <- train(Voto_alternativo_cod ~ .,

                                    method = "rf",

                                    data = train2_Voto_alternativo_cod,

                                    preProcess = c("center", "scale"),

                                    tuneGrid = expand.grid(mtry = c(2:10)),

                                    trControl = ctrl)

rfFit_Voto_alternativo_cod

varImp(rfFit_Voto_alternativo_cod)

plot(varImp(rfFit_Voto_alternativo_cod), top = 10, col = "#74A9CF", main = "M1")

rfFit_Voto_alternativo_cod$finalModel

pred_Voto_alternativo_cod <- predict(rfFit_Voto_alternativo_cod, test)

impu_Voto_alternativo_cod1 <- predict(rfFit_Voto_alternativo_cod, impu_Voto_alternativo_cod)

table(pred_Voto_alternativo_cod)

test_Voto_alternativo_cod <- test$Voto_alternativo_cod[test$Voto_alternativo_cod!=99]

test_Voto_alternativo_cod <- droplevels(test_Voto_alternativo_cod)

confusionMatrix(pred_Voto_alternativo_cod[test$Voto_alternativo_cod!=99],test_Voto_alternativo_cod)

CM1_Voto_alternativo_cod <- confusionMatrix(pred_Voto_alternativo_cod[test$Voto_alternativo_cod!=99],test_Voto_alternativo_cod)$table

AC1_Voto_alternativo_cod <- as.vector(confusionMatrix(pred_Voto_alternativo_cod[test$Voto_alternativo_cod!=99],test_Voto_alternativo_cod)$overall[1])

NA_Voto_alternativo_cod <- as.numeric(rownames(test[test[,"Voto_alternativo_cod"]=='99',]))

pos = c()

for(i in 1:nrow(test))

{

  if(test[i,"Voto_alternativo_cod"]=="99")

  {

    pos=c(pos,i)

  }

}

NA_Voto_alternativo_cod_impu <- as.numeric(rownames(impu_Voto_alternativo_cod))

M1[NA_Voto_alternativo_cod,"Voto_alternativo_cod"] <- pred_Voto_alternativo_cod[pos]

M1[NA_Voto_alternativo_cod_impu,"Voto_alternativo_cod"] <- impu_Voto_alternativo_cod1

M = 2

set.seed(1, sample.kind = "Rounding")

rfFit2_Voto_alternativo_cod <- train(Voto_alternativo_cod ~ .,

                                     method = "rf",

                                     data = train2_Voto_alternativo_cod,

                                     preProcess = c("center", "scale"),

                                     tuneGrid = expand.grid(mtry = c(2:10)),

                                     trControl = ctrl)

rfFit2_Voto_alternativo_cod

varImp(rfFit2_Voto_alternativo_cod)

plot(varImp(rfFit2_Voto_alternativo_cod), top = 10, col = "#0570B0", main = "M2")

rfFit2_Voto_alternativo_cod$finalModel

pred2_Voto_alternativo_cod <- predict(rfFit2_Voto_alternativo_cod, test)

impu_Voto_alternativo_cod2 <- predict(rfFit2_Voto_alternativo_cod, impu_Voto_alternativo_cod)

table(pred2_Voto_alternativo_cod)

confusionMatrix(pred2_Voto_alternativo_cod[test$Voto_alternativo_cod!=99],test_Voto_alternativo_cod)

CM2_Voto_alternativo_cod <- confusionMatrix(pred2_Voto_alternativo_cod[test$Voto_alternativo_cod!=99],test_Voto_alternativo_cod)$table

AC2_Voto_alternativo_cod <- as.vector(confusionMatrix(pred2_Voto_alternativo_cod[test$Voto_alternativo_cod!=99],test_Voto_alternativo_cod)$overall[1])

M2[NA_Voto_alternativo_cod,"Voto_alternativo_cod"] <- pred2_Voto_alternativo_cod[pos]

M2[NA_Voto_alternativo_cod_impu,"Voto_alternativo_cod"] <- impu_Voto_alternativo_cod2

M = 3

set.seed(2, sample.kind = "Rounding")

rfFit3_Voto_alternativo_cod <- train(Voto_alternativo_cod ~ .,

                                     method = "rf",

                                     data = train2_Voto_alternativo_cod,

                                     preProcess = c("center", "scale"),

                                     tuneGrid = expand.grid(mtry = c(2:10)),

                                     trControl = ctrl)

print(rfFit3_Voto_alternativo_cod)

varImp(rfFit3_Voto_alternativo_cod)

plot(varImp(rfFit3_Voto_alternativo_cod), top = 10, col = "#41AE76", main = "M3")

rfFit3_Voto_alternativo_cod$finalModel

pred3_Voto_alternativo_cod <- predict(rfFit3_Voto_alternativo_cod, test)

impu_Voto_alternativo_cod3 <- predict(rfFit3_Voto_alternativo_cod, impu_Voto_alternativo_cod)

table(pred3_Voto_alternativo_cod)

confusionMatrix(pred3_Voto_alternativo_cod[test$Voto_alternativo_cod!=99],test_Voto_alternativo_cod)

CM3_Voto_alternativo_cod <- confusionMatrix(pred3_Voto_alternativo_cod[test$Voto_alternativo_cod!=99],test_Voto_alternativo_cod)$table

AC3_Voto_alternativo_cod <- as.vector(confusionMatrix(pred3_Voto_alternativo_cod[test$Voto_alternativo_cod!=99],test_Voto_alternativo_cod)$overall[1])

M3[NA_Voto_alternativo_cod,"Voto_alternativo_cod"] <- pred3_Voto_alternativo_cod[pos]

M3[NA_Voto_alternativo_cod_impu,"Voto_alternativo_cod"] <- impu_Voto_alternativo_cod3

Matriz Confusión

CMT_Voto_alternativo_cod <- (CM1_Voto_alternativo_cod)

for(i in 1:nrow(CMT_Voto_alternativo_cod))

{

  for(j in 1:ncol(CMT_Voto_alternativo_cod))

  {

    if((CM1_Voto_alternativo_cod[i,j]+CM2_Voto_alternativo_cod[i,j]+CM3_Voto_alternativo_cod[i,j])%%3 != 0)

    {

      CMT_Voto_alternativo_cod[i,j] = as.character(round((CM1_Voto_alternativo_cod[i,j]+CM2_Voto_alternativo_cod[i,j]+CM3_Voto_alternativo_cod[i,j])/3,2))

    }else{

      CMT_Voto_alternativo_cod[i,j] = as.character(as.integer((CM1_Voto_alternativo_cod[i,j]+CM2_Voto_alternativo_cod[i,j]+CM3_Voto_alternativo_cod[i,j])/3))

    }

  }

}

CMT_Voto_alternativo_cod = cbind(c(1:11), CMT_Voto_alternativo_cod)

kable(CMT_Voto_alternativo_cod, position = "center", booktabs = TRUE, align = "cccccc", caption = "<left><em> Matriz de confusión Intención de Voto alternativo </em></center>", escape = FALSE, col.names = c("Prediction", "1","2","3", "4", "5", "6", "7", "8", "9", "10", "11"))%>%

  kableExtra::footnote(symbol = c("Al tomar la media de los elementos de las matrices de confusión,

                      es posible que no se obtenga un número entero"), threeparttable=T)%>%

  kable_classic(full_width = F,  html_font = "Times New Roman")%>%

  add_header_above(c(" " = 1, "Reference" = 1, " " = 10))%>%

  column_spec(1:12, width = "1.2cm")

ACT_Voto_alternativo_cod <- c(AC1_Voto_alternativo_cod,AC2_Voto_alternativo_cod,AC3_Voto_alternativo_cod)

ACM_Voto_alternativo_cod <- mean(c(ACT_Voto_alternativo_cod))

ACSD_Voto_alternativo_cod <- sqrt(var(ACT_Voto_alternativo_cod)/3)

 

-        Precisión de los modelos

accuracies1 <- data.frame(c(round(ACM_Situ,3), round(ACSD_Situ,3), round(ACM_Estudios,3), round(ACSD_Estudios,3), round(ACM_civil_cod,3), round(ACSD_civil_cod,3), round(ACM_Participacion_cod,3), round(ACSD_Participacion_cod,3), round(ACM_Religion_cod,3), round(ACSD_Religion_cod,3), round(ACM_Situ_eco_cod,3), round(ACSD_Situ_eco_cod,3), round(ACM_Conf_presi_cod,3), round(ACSD_Conf_presi_cod,3), round(ACM_clase_cod,3), round(ACSD_clase_cod,3), round(ACM_Conf_opo_cod,3), round(ACSD_Conf_opo_cod,3), round(ACM_Valoracion_ps_cod,3), round(ACSD_Valoracion_ps_cod,3), round(ACM_Valoracion_pi_cod,3), round(ACSD_Valoracion_pi_cod,3), round(ACM_Simpatia_cod,3), round(ACSD_Simpatia_cod,3), round(ACM_Valoracion_pc_cod,3), round(ACSD_Valoracion_pc_cod,3)))

 

for(i in 1:nrow(accuracies1))

{

  if(i%%2 == 0)

  {

    accuracies1[i,1] = paste0("(",accuracies1[i,1],")")

  }

}

 

accuracies2 <- data.frame(c(round(ACM_Valoracion_sa_cod,3), round(ACSD_Valoracion_sa_cod,3), round(ACM_Valoracion_ia_cod,3), round(ACSD_Valoracion_ia_cod,3), round(ACM_Cercania_cod,3), round(ACSD_Cercania_cod,3), round(ACM_Pref_presi_cod,3), round(ACSD_Pref_presi_cod,3), round(ACM_Ideologia_cod,3), round(ACSD_Ideologia_cod,3), round(ACM_Ideologia_pc_cod,3), round(ACSD_Ideologia_pc_cod,3), round(ACM_Recuerdo_cod,3), round(ACSD_Recuerdo_cod,3), round(ACM_Ideologia_ps_cod,3), round(ACSD_Ideologia_ps_cod,3), round(ACM_Ideologia_sa_cod,3), round(ACSD_Ideologia_sa_cod,3), round(ACM_Ideologia_pi_cod,3), round(ACSD_Ideologia_pi_cod,3), round(ACM_Ideologia_ia_cod,3), round(ACSD_Ideologia_ia_cod,3), round(ACM_Voto_cod,3), round(ACSD_Voto_cod,3), round(ACM_Voto_alternativo_cod,3), round(ACSD_Voto_alternativo_cod,3)))

 

for(i in 1:nrow(accuracies2))

{

  if(i%%2 == 0)

  {

    accuracies2[i,1] = paste0("(",accuracies2[i,1],")")

  }

}

 

estimaciones_accuracies <-data.frame(C1 = c(rep("Situación laboral",2), rep("Nivel de Estudios",2), rep("Estado civil",2), rep("Participación anteriores elecciones",2), rep("Religión",2), rep("Valoración Situación económica",2), rep("Confianza en el actual presidente",2), rep("Clase social", 2), rep("Confianza en el presidente de la oposición",2), rep("Valoración Pedro Sánchez",2), rep("Valoración Pablo Iglesias",2), rep("Simpatía partidista",2), rep("Valoración Pablo Casado",2)), C2 = accuracies1[,1], C3 = c(rep("Valoración Santiago Abascal",2), rep("Valoración Inés Arrimadas",2), rep("Cercanía partidista",2), rep("Preferencia presidente del Gobierno",2), rep("Ideología",2), rep("Ideología Pablo Casado",2), rep("Recuerdo de voto",2), rep("Ideología Pedro Sánchez", 2), rep("Ideología Santiago Abascal",2), rep("Ideologia Pablo Iglesias",2), rep("Ideología Inés Arrimadas",2), rep("Intención de voto",2), rep("Voto alternativo",2)), C4 = accuracies2[,1])

colnames(estimaciones_accuracies)<-NULL

 

kable(estimaciones_accuracies, position = "center", booktabs = TRUE, align = "cccc", caption = "<left><em> Precisión de los modelos </em></center>", escape = FALSE, position = "center", row_label_position = "c", font_size = 15) %>%

  kable_classic(full_width = F,  html_font = "Times New Roman")%>%

  column_spec(c(1,3), bold = T) %>%

  collapse_rows(columns = 1:4, valign = "middle")

 

 

-        Árbol de decisión para la intención de voto

 

library(rpart.plot)

library(visNetwork)

library(sparkline)

library(maptree)

 

library(RColorBrewer)

rpart_Voto_cod <- rpart(Voto_cod ~ ., data = train2_Voto_cod, control = rpart.control(minsplit = 10))

my.palette <- brewer.pal(name = "BuGn", n =9)

par(family = "serif")

rpart.plot(rpart_Voto_cod, cex = 0.6, extra = 104, fallen.leaves = FALSE, varlen = 0, type = 0, box.col = my.palette)

 

 rpart_Voto_cod <- rpart(Voto_cod ~ ., data = train2_Voto_cod, control = rpart.control(minsplit = 20))

my.palette <- brewer.pal(name = "PuBu", n =9)

par(family = "serif")

rpart.plot(rpart_Voto_cod, cex = 0.6, extra = 104, fallen.leaves = FALSE, varlen = 0, type = 0, box.col = my.palette)

 

-        Árbol de decisión para la preferencia como presidente del gobierno

 

 rpart_Pref_presi_cod <- rpart(Pref_presi_cod ~ ., data = train2_Pref_presi_cod, control = rpart.control(minsplit = 50))

my.palette <- brewer.pal(name = "Greens", n =9)

par(family = "serif")

rpart.plot(rpart_Pref_presi_cod, cex = 0.6, extra = 104, fallen.leaves = FALSE, varlen = 0, type = 0, box.col = my.palette, font = 1)

 

 

-         Árbol de decisión para la confianza como presidente del gobierno

 

rpart_Conf_presi_cod <- rpart(Conf_presi_cod ~ ., data = train2_Conf_presi_cod, control = rpart.control(minsplit = 9) )

my.palette <- brewer.pal(name = "BuGn", n =9)

par(family = "serif")

rpart.plot(rpart_Conf_presi_cod, cex = 0.6, extra = 104, fallen.leaves = FALSE, varlen = 0, type = 0, box.col = my.palette)

 

 

 

-        Estimación de la intención de voto

 

#PP

table(M1$Voto_cod)

m = 3

(prop_PP_M1 <- sum((M1$Voto_cod == "1")*(cis$PESO))/(3817 - sum(M1$Voto_cod == "10")))

(prop_PP_M2 <- sum((M2$Voto_cod == "1")*(cis$PESO))/(3817 - sum(M2$Voto_cod == "10")))

(prop_PP_M3 <- sum((M3$Voto_cod == "1")*(cis$PESO))/(3817 - sum(M3$Voto_cod == "10")))

(media_PP <- round(sum(prop_PP_M1,prop_PP_M2,prop_PP_M3)/m,3))

(W_PP_M1 <- (prop_PP_M1*(1-prop_PP_M1))/(3817 - sum(M1$Voto_cod == "10")))

(W_PP_M2 <- (prop_PP_M2*(1-prop_PP_M2))/(3817 - sum(M2$Voto_cod == "10")))

(W_PP_M3 <- (prop_PP_M3*(1-prop_PP_M3))/(3817 - sum(M3$Voto_cod == "10")))

(W_PP <- sum(W_PP_M1,W_PP_M2, W_PP_M3)/m)

 

(B_PP = sum((prop_PP_M1-media_PP)^2,(prop_PP_M2-media_PP)^2, (prop_PP_M3-media_PP)^2)/(m-1))

(SE_PP = round(sqrt(W_PP+B_PP+(B_PP/m)),3))

 

 

#PSOE

(prop_PSOE_M1 <- sum((M1$Voto_cod == "2")*(cis$PESO))/(3817 - sum(M1$Voto_cod == "10")))

(prop_PSOE_M2 <- sum((M2$Voto_cod == "2")*(cis$PESO))/(3817 - sum(M2$Voto_cod == "10")))

(prop_PSOE_M3 <- sum((M3$Voto_cod == "2")*(cis$PESO))/(3817 - sum(M3$Voto_cod == "10")))

(media_PSOE <- round(sum(prop_PSOE_M1,prop_PSOE_M2,prop_PSOE_M3)/m,4))

(W_PSOE_M1 <- (prop_PSOE_M1*(1-prop_PSOE_M1))/(3817 - sum(M1$Voto_cod == "10")))

(W_PSOE_M2 <- (prop_PSOE_M2*(1-prop_PSOE_M2))/(3817 - sum(M2$Voto_cod == "10")))

(W_PSOE_M3 <- (prop_PSOE_M3*(1-prop_PSOE_M3))/(3817 - sum(M3$Voto_cod == "10")))

(W_PSOE <- sum(W_PSOE_M1,W_PSOE_M2, W_PSOE_M3)/m)

 

(B_PSOE = sum((prop_PSOE_M1-media_PSOE)^2,(prop_PSOE_M2-media_PSOE)^2, (prop_PSOE_M3-media_PSOE)^2)/(m-1))

(SE_PSOE = round(sqrt(W_PSOE+B_PSOE+(B_PSOE/m)),3))

 

 

#PODEMOS

(prop_PODEMOS_M1 <- sum((M1$Voto_cod == "3")*(cis$PESO))/(3817 - sum(M1$Voto_cod == "10")))

(prop_PODEMOS_M2 <- sum((M2$Voto_cod == "3")*(cis$PESO))/(3817 - sum(M2$Voto_cod == "10")))

(prop_PODEMOS_M3 <- sum((M3$Voto_cod == "3")*(cis$PESO))/(3817 - sum(M3$Voto_cod == "10")))

(media_PODEMOS <- round(sum(prop_PODEMOS_M1,prop_PODEMOS_M2,prop_PODEMOS_M3)/m,3))

(W_PODEMOS_M1 <- (prop_PODEMOS_M1*(1-prop_PODEMOS_M1))/(3817 - sum(M1$Voto_cod == "10")))

(W_PODEMOS_M2 <- (prop_PODEMOS_M2*(1-prop_PODEMOS_M2))/(3817 - sum(M2$Voto_cod == "10")))

(W_PODEMOS_M3 <- (prop_PODEMOS_M3*(1-prop_PODEMOS_M3))/(3817 - sum(M3$Voto_cod == "10")))

(W_PODEMOS <- sum(W_PODEMOS_M1,W_PODEMOS_M2, W_PODEMOS_M3)/m)

 

(B_PODEMOS = sum((prop_PODEMOS_M1-media_PODEMOS)^2,(prop_PODEMOS_M2-media_PODEMOS)^2, (prop_PODEMOS_M3-media_PODEMOS)^2)/(m-1))

(SE_PODEMOS = round(sqrt(W_PODEMOS+B_PODEMOS+(B_PODEMOS/m)),3))

 

 

# CIUDADANOS

(prop_CS_M1 <- sum((M1$Voto_cod == "4")*(cis$PESO))/(3817 - sum(M1$Voto_cod == "10")))

(prop_CS_M2 <- sum((M2$Voto_cod == "4")*(cis$PESO))/(3817 - sum(M2$Voto_cod == "10")))

(prop_CS_M3 <- sum((M3$Voto_cod == "4")*(cis$PESO))/(3817 - sum(M3$Voto_cod == "10")))

(media_CS <- round(sum(prop_CS_M1,prop_CS_M2,prop_CS_M3)/m,3))

(W_CS_M1 <- (prop_CS_M1*(1-prop_CS_M1))/(3817 - sum(M1$Voto_cod == "10")))

(W_CS_M2 <- (prop_CS_M2*(1-prop_CS_M2))/(3817 - sum(M2$Voto_cod == "10")))

(W_CS_M3 <- (prop_CS_M3*(1-prop_CS_M3))/(3817 - sum(M3$Voto_cod == "10")))

(W_CS <- sum(W_CS_M1,W_CS_M2, W_CS_M3)/m)

 

(B_CS = sum((prop_CS_M1-media_CS)^2,(prop_CS_M2-media_CS)^2, (prop_CS_M3-media_CS)^2)/(m-1))

(SE_CS = round(sqrt(W_CS+B_CS+(B_CS/m)),3))

 

 

#VOX

(prop_VOX_M1 <- sum((M1$Voto_cod == "5")*(cis$PESO))/(3817 - sum(M1$Voto_cod == "10")))

(prop_VOX_M2 <- sum((M2$Voto_cod == "5")*(cis$PESO))/(3817 - sum(M2$Voto_cod == "10")))

(prop_VOX_M3 <- sum((M3$Voto_cod == "5")*(cis$PESO))/(3817 - sum(M3$Voto_cod == "10")))

(media_VOX <- round(sum(prop_VOX_M1,prop_VOX_M2,prop_VOX_M3)/m,3))

(W_VOX_M1 <- (prop_VOX_M1*(1-prop_VOX_M1))/(3817 - sum(M1$Voto_cod == "10")))

(W_VOX_M2 <- (prop_VOX_M2*(1-prop_VOX_M2))/(3817 - sum(M2$Voto_cod == "10")))

(W_VOX_M3 <- (prop_VOX_M3*(1-prop_VOX_M3))/(3817 - sum(M3$Voto_cod == "10")))

(W_VOX <- sum(W_VOX_M1,W_VOX_M2, W_VOX_M3)/m)

 

(B_VOX = sum((prop_VOX_M1-media_VOX)^2,(prop_VOX_M2-media_VOX)^2, (prop_VOX_M3-media_VOX)^2)/(m-1))

(SE_VOX = round(sqrt(W_VOX+B_VOX+(B_VOX/m)),3))

 

 

#ERC

(prop_ERC_M1 <- sum((M1$Voto_cod == "6")*(cis$PESO))/(3817 - sum(M1$Voto_cod == "10")))

(prop_ERC_M2 <- sum((M2$Voto_cod == "6")*(cis$PESO))/(3817 - sum(M2$Voto_cod == "10")))

(prop_ERC_M3 <- sum((M3$Voto_cod == "6")*(cis$PESO))/(3817 - sum(M3$Voto_cod == "10")))

(media_ERC <- round(sum(prop_ERC_M1,prop_ERC_M2,prop_ERC_M3)/m,3))

(W_ERC_M1 <- (prop_ERC_M1*(1-prop_ERC_M1))/(3817 - sum(M1$Voto_cod == "10")))

(W_ERC_M2 <- (prop_ERC_M2*(1-prop_ERC_M2))/(3817 - sum(M2$Voto_cod == "10")))

(W_ERC_M3 <- (prop_ERC_M3*(1-prop_ERC_M3))/(3817 - sum(M3$Voto_cod == "10")))

(W_ERC <- sum(W_ERC_M1,W_ERC_M2, W_ERC_M3)/m)

 

(B_ERC = sum((prop_ERC_M1-media_ERC)^2,(prop_ERC_M2-media_ERC)^2, (prop_ERC_M3-media_ERC)^2)/(m-1))

(SE_ERC = round(sqrt(W_ERC+B_ERC+(B_ERC/m)),3))

 

 

#JxCat

(prop_JxCat_M1 <- sum((M1$Voto_cod == "7")*(cis$PESO))/(3817 - sum(M1$Voto_cod == "10")))

(prop_JxCat_M2 <- sum((M2$Voto_cod == "7")*(cis$PESO))/(3817 - sum(M2$Voto_cod == "10")))

(prop_JxCat_M3 <- sum((M3$Voto_cod == "7")*(cis$PESO))/(3817 - sum(M3$Voto_cod == "10")))

(media_JxCat <- round(sum(prop_JxCat_M1,prop_JxCat_M2,prop_JxCat_M3)/m,3))

(W_JxCat_M1 <- (prop_JxCat_M1*(1-prop_JxCat_M1))/(3817 - sum(M1$Voto_cod == "10")))

(W_JxCat_M2 <- (prop_JxCat_M2*(1-prop_JxCat_M2))/(3817 - sum(M2$Voto_cod == "10")))

(W_JxCat_M3 <- (prop_JxCat_M3*(1-prop_JxCat_M3))/(3817 - sum(M3$Voto_cod == "10")))

(W_JxCat <- sum(W_JxCat_M1,W_JxCat_M2, W_JxCat_M3)/m)

 

(B_JxCat = sum((prop_JxCat_M1-media_JxCat)^2,(prop_JxCat_M2-media_JxCat)^2, (prop_JxCat_M3-media_JxCat)^2)/(m-1))

(SE_JxCat = round(sqrt(W_JxCat+B_JxCat+(B_JxCat/m)),3))

 

 

#EAJ-PNV

(prop_PNV_M1 <- sum((M1$Voto_cod == "8")*(cis$PESO))/(3817 - sum(M1$Voto_cod == "10")))

(prop_PNV_M2 <- sum((M2$Voto_cod == "8")*(cis$PESO))/(3817 - sum(M2$Voto_cod == "10")))

(prop_PNV_M3 <- sum((M3$Voto_cod == "8")*(cis$PESO))/(3817 - sum(M3$Voto_cod == "10")))

(media_PNV <- round(sum(prop_PNV_M1,prop_PNV_M2,prop_PNV_M3)/m,3))

(W_PNV_M1 <- (prop_PNV_M1*(1-prop_PNV_M1))/(3817 - sum(M1$Voto_cod == "10")))

(W_PNV_M2 <- (prop_PNV_M2*(1-prop_PNV_M2))/(3817 - sum(M2$Voto_cod == "10")))

(W_PNV_M3 <- (prop_PNV_M3*(1-prop_PNV_M3))/(3817 - sum(M3$Voto_cod == "10")))

(W_PNV <- sum(W_PNV_M1,W_PNV_M2, W_PNV_M3)/m)

 

(B_PNV = sum((prop_PNV_M1-media_PNV)^2,(prop_PNV_M2-media_PNV)^2, (prop_PNV_M3-media_PNV)^2)/(m-1))

(SE_PNV = round(sqrt(W_PNV+B_PNV+(B_PNV/m)),3))

 

 

#Otros

(prop_Otros_M1 <- sum((M1$Voto_cod == "9")*(cis$PESO))/(3817 - sum(M1$Voto_cod == "10")))

(prop_Otros_M2 <- sum((M2$Voto_cod == "9")*(cis$PESO))/(3817 - sum(M2$Voto_cod == "10")))

(prop_Otros_M3 <- sum((M3$Voto_cod == "9")*(cis$PESO))/(3817 - sum(M3$Voto_cod == "10")))

(media_Otros <- round(sum(prop_Otros_M1,prop_Otros_M2,prop_Otros_M3)/m,3))

(W_Otros_M1 <- (prop_Otros_M1*(1-prop_Otros_M1))/(3817 - sum(M1$Voto_cod == "10")))

(W_Otros_M2 <- (prop_Otros_M2*(1-prop_Otros_M2))/(3817 - sum(M2$Voto_cod == "10")))

(W_Otros_M3 <- (prop_Otros_M3*(1-prop_Otros_M3))/(3817 - sum(M3$Voto_cod == "10")))

(W_Otros <- sum(W_Otros_M1,W_Otros_M2, W_Otros_M3)/m)

 

(B_Otros = sum((prop_Otros_M1-media_Otros)^2,(prop_Otros_M2-media_Otros)^2, (prop_Otros_M3-media_Otros)^2)/(m-1))

(SE_Otros = round(sqrt(W_Otros+B_Otros+(B_Otros/m)),3))

 

media_PSOE <- media_PSOE*100

media_PP <- media_PP*100

media_PODEMOS <- media_PODEMOS*100

media_CS <- media_CS*100

media_VOX <- media_VOX*100

media_ERC <- media_ERC*100

media_JxCat <- media_JxCat*100

media_PNV <- media_PNV*100

media_Otros <- media_Otros*100

estimaciones_votos <- data.frame(c(media_PSOE, as.character(SE_PSOE), media_PP, as.character(SE_PP), media_PODEMOS, as.character(SE_PODEMOS), media_CS, as.character(SE_CS), media_VOX, as.character(SE_VOX), media_ERC, as.character(SE_ERC), media_JxCat, as.character(SE_JxCat), media_PNV, as.character(SE_PNV), media_Otros, as.character(SE_Otros)), stringsAsFactors=FALSE)

estimaciones_votos

 

for(i in 1:nrow(estimaciones_votos))

{

  if(i%%2 == 0)

  {

    estimaciones_votos[i,1] = paste0("(",estimaciones_votos[i,1],")")

   

  }else{

    estimaciones_votos[i,1] = estimaciones_votos[i,1]

  }

}

 

estimaciones_votos2 <-data.frame(C1 = c(rep("PSOE",2), rep("PP",2), rep("Unidas Podemos",2), rep("Ciudadanos",2), rep("VOX",2), rep("ERC",2), rep("JxCat",2), rep("EAJ-PNV", 2), rep("Otros",2)), C2 = estimaciones_votos[,1])

colnames(estimaciones_votos2)<-NULL

 

 

kable(estimaciones_votos2, position = "center", booktabs = TRUE, align = "cc", caption = "<left><em> Estimación de voto en % sobre voto válido </em></center>", escape = FALSE, position = "center", row_label_position = "c") %>%

  kable_classic(full_width = F,  html_font = "Times New Roman")%>%

  column_spec(1, bold = T) %>%

  collapse_rows(columns = 1:2, valign = "middle")%>%

  column_spec(c(1), width = "3cm")

 

 

#Compración con el CIS

comparacion_est <- data.frame(c(media_PSOE, media_PP, media_VOX, media_PODEMOS, media_CS, media_ERC, media_JxCat, media_PNV, media_Otros))

comparacion_CIS <- data.frame(c("29.5", "19.2", "14.0", "10.8", "10.5", "2.9", "1.7", "1.4", "10"))

voto_CIS <- data.frame(c("19.4", "11.8", "7", "7.1", "7.5", "1.6", "0.9", "0.9", "0.9", "1.1", "1.6", "0.4", "0.2", "0.2", "0.5", "0.1", "0.7", "4.5", "1.3", "11.5", "16.8", "4"))

voto_CIS_est <- data.frame(c("29.5", "19.2", "14.0", "10.8", "10.5", "2.9", "1.7", "1.4", "1.2", "1.2", "2.4", "0.8", "0.5", "0.4", "0.5", "0.1","0.9", "2"))

nombres_CIS <- data.frame(c("PSOE", "PP", "VOX", "Unidas Podemos", "Ciudadanos", "ERC", "JxCat", "EAJ-PNV", "Otros", "EH Bildu", "Más País/Compromís","CUP", "CCa-NC", "NA+", "BNG", "PRC", "PACMA", "En blanco", "Voto nulo", "Abstención", "NS", "NC"))

 

library(zoo)

tabla_total_est <- data.frame(nombres_CIS, cbind(zoo(, 1:nrow(nombres_CIS)), as.zoo(voto_CIS)))

tabla_total_est1 <- data.frame(tabla_total_est, cbind(zoo(, 1:nrow(tabla_total_est)), as.zoo(voto_CIS_est)))

tabla_total_est2 <- data.frame(tabla_total_est1, cbind(zoo(, 1:nrow(tabla_total_est1)), as.zoo(comparacion_CIS)))

tabla_total_est3 <- data.frame(tabla_total_est2, cbind(zoo(, 1:nrow(tabla_total_est2)), as.zoo(comparacion_est)))

colnames(tabla_total_est3)<- NULL

 

options(knitr.kable.NA = '')

kable(tabla_total_est3, position = "center", booktabs = TRUE, align = "cc", caption = "<left><em> Comparación de los resultados CIS </em></center>", col.names = c(" ", "Voto directo en la escuesta (en % sobre censo)", "Estimación de voto CIS (en % sobre el voto válido)", "Agrupación estimación de voto CIS", "Esimación de voto Imputación múltiple"), escape = FALSE, position = "center", row_label_position = "c") %>%

  kable_classic(full_width = F,  html_font = "Times New Roman")%>%

  column_spec(1, bold = T) %>%

  column_spec(c(1), width = "0.5cm")